# Git使用手册

Git使用手册


Git初始化以及简单操作
  1. 创建一个版本库
//新建一个文件夹
mkdir first 
$ git init 
  1. 把文件添加到仓库:
$ git add one.txt
$ git add one.txt two.txt
  1. 把文件提交到仓库
$ git commit -m "初始化提交"
  1. git status命令查看结果
$ git status 
  1. git diff查看修改的不同内容
  2. git log查看日志
  3. HEAD指向的版本就是当前版本,git log 查看提交历史,以便确定要回退到那个版本,使用命令git reset --hard commit_id

工作区和暂存区
版本库

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git创建的第一个分支master,以及指向master的指针叫HEAD。

  1. git add把文件添加到暂存区。
  2. git commit把暂存区所有的内容添加到当前分支
    因为创建Git版本库时候创建了唯一的一个master分支,所有git commit就是往 master分支上提交更改。
  3. 每次修改如果不add到暂存区,那么就不会加入到Commit中。

撤销修改
  1. git checkout --file可以丢弃工作区的修改
//git checkout -- file --很重要,如果不加则会是创建一个新的分支
$ git checkout --readme.txt

把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

  • readme.txt自修改后还没有放到暂存区内,现在撤销修改就回到和版本库一模一样的状态;
  • readme.txt已经添加到暂存区后又做了修改,现在,撤销修改就回到添加暂存区后的状态。
    总之,就是让这个文件回到最近一次git commit或 git add时候的状态。
  1. git reset HEAD file可以把暂存区的修改撤销掉,重新放回工作区。git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。

删除文件
//提交到暂存区
$ git add test.txt
//提交到版本库
$ git commit -m "add test.txt"

当你在文件管理器中把没用的文件删了rm test.txt,这个时候git就知道你删除了文件,因此工作区和版本库就不一致了,git status会立刻告诉你哪些文件被删除了。

现在你有两个选择,一是确实要从版本库中删除该文件,那么就用 git rm删掉,并且git commit现在文件就从版本库中删掉了。另一种情况是删错了,因为版本库了还存在所以可以把误删的文件恢复到最新版本git checkout --test.txt
git checkout其实就是用版本库里的版本替换工作区的版本,无论工作是修改还是删除,都可以“一键还原”


分支

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hxO3vWvi-1577714215699)(C:\Users\MarlonBrando\AppData\Roaming\Typora\typora-user-images\1577355620106.png)]

创建一个属于自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样既安全又不会影响别人工作。

创建与合并分支

每次提交,Git都把它么串成一条时间线,这条时间线就是一个分支,截止到目前只有一条时间线,在Git里,这个分支叫master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前的分支。
首先,我们创建dev分支,然后切换到dev分支:

$ git checkout -b dev

git checkout命令加上-b参数表示创建并且切换,相当与以下两条命令:

$ git branch dev
$ git checkout dev

git branch查看当前分支,会列出所有分支,当前分支前面会标一个‘*’

  • 把dev分支的工作成果合并到master分支上:
//切换到master分支
$ git checkout master
//合并
$ git merge dev 
//合并完成后就可以删除dev分支了
$ git branch -d dev

解决冲突

当Git无法自动合并分支时候,就必须首先解决冲突。解决冲突后,再提交,合并完成。用git log --graph命令可以看到分支合并图


临时仓库

修复 bug 时,我们会通过创建新的 bug 分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash一下,然后去修复 bug,修复后,再 git stash pop,回到工作现场。


多人协作
  • 首先,可以试图用 git push origin branch-name 推送自己的修改;
  • 如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;
  • 如果合并有冲突,则解决冲突,并在本地提交;
  • 没有冲突或者解决掉冲突后,再用 git push origin branch-name 推送就能成功!

标签操作
  • 命令 git tag <name>用于新建一个标签,默认为 HEAD,也可以指定一个 commit id ;
  • git tag -a <tagname> -m "blablabla..."可以指定标签信息;
  • git tag -s <tagname> -m "blablabla..."可以用 PGP 签名标签;
  • 命令 git tag可以查看所有标签。
  • 命令git push origin <tagname>可以推送一个本地标签;
  • 命令 git push origin --tags可以推送全部未推送过的本地标签;
  • 命令git tag -d <tagname>可以删除一个本地标签;
  • 命令 git push origin :refs/tags/<tagname>可以删除一个远程标签。

的本地标签;

  • 命令git tag -d <tagname>可以删除一个本地标签;
  • 命令 git push origin :refs/tags/<tagname>可以删除一个远程标签。
发布了123 篇原创文章 · 获赞 9 · 访问量 3983

猜你喜欢

转载自blog.csdn.net/qq_37248504/article/details/103774292