git revert的使用

当项目需要回滚时,就需要用到git revert或git reset命令。

git revert和git reset的区别就是revert 是将之前的提交反转(新增就删除),然后作为一次新的提交;reset commit_id是回滚到该commit_id下,该commit_id之后的提交都会删除。

所以在生产环境一般建议用git revert,同时强烈建议使用git命令行操作git而不是git的相关工具,因为git命令行可以让你知道每个命令做了什么,下一步要做什么。

步入正题:(若回滚多个commit,做好先回滚最近的commit) 
1、git revert -n commit_id ,若出现is a merge but no -m option was given 
这是因为你revert的那个commit是一个merge commit,它有两个parent, Git不知道base是选哪个parent,就没法diff,所以就抱怨了,所以你要显示告诉Git用哪一个parent。 
则 git revert -n commit_id -m 1 这样就选parent 1,那么parent 1又是哪一个呢? 
一般来说,如果你在master上merge branch_xxx,那么parent 1就是master,parent 2就是branch_xxx. 
2、git reset HEAD 
3、git add. 
4、git commit -m “xxx” 
5、git push origin master

revert之后,修改好分支再merge到master发现之前merge的代码不能merge到master上了,这是因为master上已经有了之前的merge历史了 
解决办法:revert之前revert的commit_id 
具体参考(https://github.com/git/git/blob/master/Documentation/howto/revert-a-faulty-merge.txt

猜你喜欢

转载自blog.csdn.net/u012516166/article/details/79474698