Git教程(三)版本库回滚操作

TangLu 未命名 2019-11-22 4249 0

Git在工作时会把每一次的commit进行一个快照,然后通过HEAD指针指向到一个新的分支上去(也就是说HEAD代表了当前最新快照的位置),切换分支后又会在分支上生成一个指针,整个过程如下图:有master和new两个分支,切换到哪个分支,HEAD就指向到哪个分支最新的快照上

githuigun1.png


要进行版本回滚的话使用的命令是git reset

在Git中使用HEAD表示当前的版本,也就是最新一次的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,如果需要回退的版本太多了,比如回退20次,可以写成HEAD20。 

git reset HEAD 文件名  #将已经添加到暂存区中的文件进行回滚
git reset --soft SHA1  #所回滚版本之后的版本会放到暂存区中,还可以通过git reset SHA1的方式回到未来版本中,所以回退之前应该记下对应的Hash值
git reset --hard SHA1  #会删除掉所回滚版本之后的版本,无法通过git reset SHA1回到未来版本

如果某条commit的Hash发生了变化,比如某一个commit被分解成了多个commit,那么通过git log查看时就无法看到那条分解之前的commit的Hash值了,这个时候需要恢复的话就要用到git reflog命令,该命令可以看到每一次导致commit发生变化时的操作情况并记录当时的Hash值(如果是通过--hard回退了版本又后悔了的话可以用这个命令恢复)。

评论