【Git 深入理解】如何版本回退

【Git 深入理解】如何版本回退

应用场景:

从git远程仓库拉下代码后发现,同事的最后一次提交把bug也连同提交了,这导致我没法本地运行代码了。最关键的是,他一下修改了八九个文件,全都报错,我也不能一点点帮他改呀。


具体操作:

1、先暂存本地修改

git stash

2、回到自己本地最后一次commit:

(1)git log查看本地commit的版本号

(2)git reset到这个commit

3、恢复暂存

git stash pop

4、接着就可以继续对自己的代码进行修改了,当需要提交的时候:

先git stash,然后git pull,再git stash pop就可以修改了。


心路历程:

这个问题真的在我们公司非常常见,经常就会有同事把bug提交到库上了,而我不小心把错误代码拉下来后,我本地根本没法跑程序了。这个问题在我们团队一直存在,今天有空特意研究了一下。

中间遇到了哪些坑呢?

我一直在用git revert <commit_id>,这样在最后push代码的时候会报错。这很坑,都已经改那么多了,最后提交代码才报错。


下面来介绍一下git revert 和 git reset的区别(看了中文blog半天也找不到能理解的,就干脆去看英文help了):

1、git revert <commit_id> 会把这次commit给撤销掉,而这次commit之后的commit仍然存在!!!

2、git reset <commit_id> 会把这次commit和之后的commit都撤销掉!!这也就是为什么版本回退是需要git reset了。