【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了。