撤消特定提交的最简单方法是:
- 不在头部或头部
- 已被推到远程。
因为如果不是最新提交,
git reset HEAD
不起作用。而且由于它已经被推到了遥远的地方,
git rebase -i
和
git rebase --onto
会在遥控器上造成一些问题。
更何况,我真的不想修改历史记录。如果有错误的代码,它就存在于历史中并且可以看到。我只想在工作副本中删除它,并且不介意反向合并提交。
换句话说,以下svn命令的Git等效项是什么:
svn merge -r 303:295 http://svn.example.com/repos/calc/trunk
通过将这些修订中的所有更改反向合并为新提交,从而将所有更改从295删除为302。
svn merge -c -302 ^/trunk
当然可以通过添加另一个提交来撤消302提交,该提交将反向合并来自相应提交的更改。
我认为这在Git中应该是一个相当简单的操作,并且是一个相当普遍的用例。原子提交还有什么意义呢?
我们已经举办藏起来,并要保证的提交是完全原子,你不应该能够解开其中一个或多个原子提交的容易吗?