管理本地版本库

  首先要明白的是Git有三个部分,本别是工作区缓存区版本库

  • 工作区:就是Git管理的目录(前面我们将它称为版本库,是不准确的)
  • 缓存区:stage,就是每次add以后【文件修改】存放的地方。
  • 版本库:隐藏目录.git,里面存放了【文件修改】的记录。

  Git管理的是【文件修改】,比如对某个文件添加了一行,这个行为就属于一个文件修改。

  在我们修改或者新建了文件之后,都要用git add命令将【文件修改】加入到stage(缓存区)中,然后再用git commit命令将stage中的【文件修改】提交到版本库。

  上图中的master是主干,可以理解为主分支(trunk)。HEAD是指向最新版本的指针。

  • git status 命令查看版本库的状态,看有没有缓存区的内容没有commit,或者有没有工作区的改变没有add到缓存区。
  • git diff HEAD -- 文件名 查看文件在工作区和当前分支中的差异。
  • git checkout -- 文件名 撤销工作区的修改,将文件的工作区恢复成与缓存区或版本库一致的内容。
  • git reset HEAD 文件名 撤销对缓存区的add

  上面都是在commit之前撤销修改。如果已经commit了,想回退,或者回退之后又想取消,则需要下面的命令:

  git log 查看提交日志。日志之中包含每次提交的版本号,作者,时间,注释。例如:

commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Mon Aug 19 17:51:55 2013 +0800


    wrote a readme file

  commit之后的那一长串数字就是版本号,你想要回退到哪个版本,只需要输入命令:git reset --hard 版本号

  版本号不用包含所有,只需要开头的几位就行了,git会自动搜索,但是位数不能太少,以免和其他版本号产生混淆。

  还有一种相对当前版本回退的方法,简单来说,想回退到倒数第一次commit的版本,输入:git reset --hard HEAD^,想回退到倒数第二次commit的版本,输入:

git reset --hard HEAD^^,想回退到倒数第n次commit的版本,输入:git reset --hart HEAD~n

  回退之后,再查看提交日志,会发现未来版本的日志已经没有了,即如果想取消回退,却无法找到未来版本的版本号了。此时需要用命令:git reflog,来查看未来版本号。再通过git reset --hard 版本号,来恢复到未来版本。

原文地址:https://www.cnblogs.com/johnsblog/p/4228828.html