【问题标题】:Reset remote HEAD to a specific commit before merge在合并之前将远程 HEAD 重置为特定的提交
【发布时间】:2018-10-15 18:06:36
【问题描述】:
这是 Git Extensions 提出的情况:
A 和 B 被推送到 origin/master。然后另一个开发人员合并了 C。事实证明,C 本身更好。 A、B 和合并的 HEAD 应该被吹走,C 应该成为新的 HEAD。
我看到了一个关于how to roll back remote 的问答。我的疑问是术语。回滚是我想要在这里做的吗?如果不是,这个操作叫什么?
我目前是该项目的唯一开发人员,因此我不必担心会干扰其他人的工作。
【问题讨论】:
标签:
git
branching-and-merging
【解决方案1】:
当您是唯一的开发人员时,您可以使用通常不建议使用的简单方法,即使用git reset --hard <commit-sha1> 将本地分支重置为您需要的任何提交,然后执行git push --force ,强行覆盖遥控器。
更简洁的方法仍然是通过恢复它们来丢弃 A 和 B 这两个提交。 git revert <A-sha1> 和 git revert <B-sha1> 将摆脱这两个提交引入的更改,同时将它们留在历史中。然后你就可以像往常一样推送了。
为了具体解决术语,Git 中没有所谓的回滚。当人们在 Git 的上下文中谈论回滚时,他们通常指的是恢复或重置。简单地说这两个,revert 通过创建一个撤消更改的新提交来撤消提交。并且 reset 在历史上的不同提交处创建一个分支点,可能导致提交完全丢失。