前言
在工作中,我们经常会碰到这种情况,发现中间的某次提交是错误的,或者不再需要的代码,这个时候想要撤回那次commit,该如何呢?
问题背景
假如远程仓库上有5次commit,如图:
我们的目的是想撤销第二次提交,也就是commitid为6fb1cc7的,那么我们怎么操作呢,如果使用git reset --hard commitid,那这次提交之后的提交都不见了,不是我们所期望的,经过查询,可以使用revert命令。下面详细介绍。
revert命令
- 想要撤回中间某次commit,可以使用命令
git revert commit_id
- 如果这次提交是别的分支合并过来的,按照提示可知需要加参数-m
git revert -m commit_id
然后如果有冲突,解决冲突,然后重新commit,push到远程分支,这时远程仓库会多了一个commit,而原来想要撤销的那条commit记录还在,但是最终代码,也就是最新的commit,已经把不要的代码移除了,此时达到了我们的目的。
- 如果想撤销的不是一次commit,而是连着的几次,那么
git revert --no-commit commit1..commit2
注意这是一个左开右闭区间,即不包括 commit1,但包括 commit2
下面我们一步一步的进行这次操作:
有冲突,解决之后:
总结
如果想撤销某次commit,使用命令
git revert commit_id
push到远程仓库即可