我将一个包含不时变化并且不稳定的开发分支(dev branch)合并到我们存储已发布稳定代码的主分支(master branch)中。我想将主分支恢复到之前的状态,就好像从未合并过dev分支一样(并在将来合并dev分支时,现在要舍弃的所有更改都将再次合并)。目前主分支的状态如下图所示,我希望它在HEAD处有“professional-1.1.2”提交/标签。
我尝试过:
经过一番调查,我认为更好的选择是执行
![status of the master branch](https://istack.dev59.com/Q7Mi2.webp)
$ git revert -n professional-1.1.2..HEAD
fatal: Commit 9167e846a387c793edbc089c7ab6bd9eb8260456 is a merge but no -m option was given.
$ git revert -n -m 1 professional-1.1.2..HEAD
fatal: Mainline was specified but commit 380169097f35d07466640bc0db1b639278cd25fa is not a merge.
$ git revert -n -m 2 professional-1.1.2..HEAD
fatal: Mainline was specified but commit 380169097f35d07466640bc0db1b639278cd25fa is not a merge.
经过一番调查,我认为更好的选择是执行
git reset --hard professional-1.1.2
和 git push --force
作为对 Git:如何忽略快速转发并将 origin [branch] 恢复到早期提交? 或者 撤销 push 的 Git 提交 的答案。其他开发人员也在同一办公室,他们不应该向主分支提交任何内容(我也不应该,但是......是的,我们没有每个分支的权限),因此告诉他们并执行必要的操作并不是什么大问题。
所以最终问题是:git revert something
还是 git reset --hard <TAG>
&& git push --force
?如果使用 git revert
,应该使用哪个命令行?
git reset --hard
而不是git revert
? - Carlos Campderrós