【发布时间】:2020-06-12 20:26:13
【问题描述】:
撤消特定提交的最简单方法是:
- 不在头部或头部
- 已推送到遥控器。
因为如果不是最新的提交,
git reset HEAD
不起作用。而且因为它已被推送到远程,
git rebase -i
和
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 中一个相当简单的操作和一个相当常见的用例。原子提交还有什么意义?
我们有 staging stashing 并且所有这些都是为了确保提交是完全原子的,您不应该能够轻松撤消一个或多个原子提交吗?
【问题讨论】:
标签: git version-control git-reset git-revert