撤销一个特定的提交的最简单的方法是:
不是在头部或头部 一直被推到遥控器。
因为如果不是最近的提交,
git reset HEAD
是行不通的。因为它被推到了遥控器,
git rebase -i
and
git rebase --onto
遥控器会出问题的。
更重要的是,我不想修改历史。如果有糟糕的代码,它就在历史记录中,可以被看到。我只想在工作副本中取出它,我不介意反向合并提交。
换句话说,Git中等价于以下svn命令的是什么:
svn merge -r 303:295 http://svn.example.com/repos/calc/trunk
通过反向合并这些修订中的所有更改,将所有更改从295删除到302,作为一个新的提交。
svn merge -c -302 ^/trunk
当然,它通过添加另一个提交来撤销302提交,该提交反向合并来自相应提交的更改。
我认为这应该是Git中一个相当简单的操作,并且是一个相当常见的用例。原子提交还有什么意义呢?
我们有暂存和所有来确保提交是完全原子的,你不应该能够轻易撤销一个或多个原子提交吗?