Git在合并后还原提交

时间:2018-06-20 04:26:31

标签: git git-commit git-revert

我有以下情况:

Remote: A<-B<-----C<-D<-------\
Local:      \-B1<------B2<-B3<-M

因此,我已将来自远程的请求合并到我的本地存储库(M)中。我现在想还原B3,然后回到B2。 我尝试做一个

git revert --no-commit -m 1 M
git revert --continue

现在我的git日志显示以下内容:

commit R
Revert "Merge branch 'master' of https://...."
This reverts commit M, reversing changes made to B3

commit M
....

commit B3
....

....

但是,即使git日志中提到“ 撤消对B3所做的更改”,但是当我执行git状态时,它显示的是我期望的 B3提交后的结果。 。 看来,我实际上是前进而不是后退(新的提交R)。

我的问题:

  1. 我如何回到B2?
  2. 还原合并是正确的事情/需要做的事情吗?

1 个答案:

答案 0 :(得分:0)

您可以将master重设为B2并进行合并:

git reset --hard B2
git merge remote/master

提交是不可变的,因此,如果要合并到其他提交中,则必须从头开始。

另一方面,如果您对自己的历史感到满意并且只想看看B2,则可以查看一下:

git checkout B2

最可能的revert不是您想要的。 revert将添加一组提交,这些提交将反转所选范围引入的更改。通常,可以使用更简单的方法来达到所需状态。