git学习笔记

262 阅读4分钟

问题

code命令无法在git bash中运行,显示错误 /d/Microsoft VS Code/bin/code: line 61: /d/Microsoft VS Code/Code.exe: Permission denied 解决方法:

  1. 查看code是否添加进path中
  2. 添加了依然无法运行
  3. 在D:\Microsoft VS Code文件夹中,查看Code.exe的属性->兼容性,取消“以管理员身份运行”
  4. 运行code显示错误,代码的第二个实例已以管理员身份运行
  5. 重新启动vs code,再次运行code命令,可以执行

git本地仓库

基础命令

在git bash中运行git,整个框是bash

git 版本控制

git init 初始化,创建一个仓库

  • git init 会创建.git目录
  • code . 表示在VS code中打开当前目录
  • ls -a 表示打开所有目录,包括以.开头的文件
  • .git文件夹用于容纳代码快照

git add 哪些可以提交,还没提交,标记要

  • git add 路径,可以为绝对路径、相对路径 .和*
  • 添加之后,vscode中会显示A,表示可以提交,U表示未添加
  • git add 可以删除
  • 删除提交过的文件,先rm,之后需要git add

.gitignore 哪些不需要提交

  • 怎么告诉git,哪些不需要提交,总不能每次都挨个添加
    • 新建.gitignore文件,在其中添加不需要提交的文件名即可
  • 常见的不能提交的目录
    • node_modules,太大了
    • .DS_Store
    • .idea
    • .vscode

git status 显示提交状态

git commit -m 字符串 提交

  • 提交并说明提交理由(输入字符串,一般会设为版本号)
  • 字符串里如果有空格,就要用引号包起来

git commit -v 推荐

  • verbose 啰嗦
  • 会打开vscode,并等你输入一条信息,来描述你的改变信息,并能看到修改内容
  • 推荐这种方式

如果存十次会有十倍的代码嘛,是不会的,可以重复利用

git log 创建的版本/拷贝可以通过这条语句查看

git add . git commit -v

各个版本的转换

git reset --hard XXXXXX

  • XXXXXX是提交号的前6位,至少为4个,保证唯一性

  • 这个操作会使没有commit过的代码消失

  • 示例: 使用 git reset --hard xxxxxx 回到版本1后,此时查看版本 git log 会发现只有版本1,那想回到其他版本怎么办呢,需要XXXXXX号

git reflog

  • 不仅看当前的历史,还有版本转换的历史,里面有XXXXXX号

问题

只有commit才会发生拷贝 不要有文件处于add状态,没有commit

如何同时做多个版本?

git branch x

  • 可以创造平行时间线x,术语叫做【分支】
  • 基于当前的树枝长出的新树枝
  • 基于当前的快照

git checkout x

  • 切换分支时是不影响当前硬盘上的文件的,即使它没被add

git branch

  • 显示当前在哪个分支

git merge x 合并分支

  • 有冲突错误:conflict 使用git status得到冲突原因
  • git status -sb,可以得到更简化的信息
  • 解决冲突:依次打开每个文件;搜索====四个等于号,在上下两部分中选择要保留的代码,输出不用的代码,删除====>>>><<<<字符
  • git add对应文件
  • 再次git status -sb,解决下一个冲突
  • 都解决后,直接git commit

git branch -d x 删除分支

  • 注意:合并后分支没有消失,所以可以选择删除该分支

过程

  • 先提交,提交成功则这个版本为master
  • 创建分支,git branch x
  • 此时依然位于master分支,修改代码,提交
  • git checkout x,进入另一个分支,修改代码,提交
  • git checkout master,返回master分支

远程仓库

公钥私钥

id_rsa 私钥 id_rsa.pub 公钥

命令

git remote add origin git@github.com:xxx/git-demo-1.git

git branch -M main

git push -u origin main/xxx

  • 在vscode里进入这个文件夹,然后新建终端(直接运行bash即可进入bash终端),在终端中运行该代码
  • 只有第一次上传需要写后面三个,以后直接git push
  • origin表示仓库名字(疑问)
  • -f指强制执行,最后不要用这个

git clone 地址

  • 下载别人的代码也可以使用ssh地址
  • 自己的可以用ssh地址
  • 每次clone会下载所有分支
  • clone完毕后cd进入文件夹
  • git clone 地址 新名字
    • 就可以在下载时重命名这个文件夹
    • cd进入文件夹
  • git clone 地址 .
    • 先进入一个新文件夹,运行该行代码,即可直接将代码放在这个文件夹中
    • 最好为空文件夹

总结

git add/git commit/[git pull]/git push 只有在远程代码变动,在git push时会提示需要先git pull

  • git pull 是在我已经拥有本地仓库的前提下,只下载本地没有的那一部分变更