【问题标题】:Git Reverting a commit post a mergeGit在合并后恢复提交
【发布时间】:2018-11-29 02:44:29
【问题描述】:

我有以下情况:

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 日志提到“reversing changes made to B3”,当我执行 git status 时,它显示的内容与我期望的相同 B3 提交之后. 看来,我实际上是向前而不是向后(新提交 R)。

我的问题:

  1. 如何返回 B2?
  2. 恢复合并是正确的做法/需要吗?

【问题讨论】:

  • git 重置,git 合并?
  • 或者 git checkout?

标签: git git-commit git-revert


【解决方案1】:

您可以将master 重置回B2 并进行合并:

git reset --hard B2
git merge remote/master

提交是不可变的,所以如果你想合并到不同的提交中,你必须从头开始。

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

git checkout B2

很可能revert 不是您想要的。 revert 将添加一组提交,以反转您选择的范围引入的更改。通常有更简单的方法可以到达您想要的状态。

【讨论】:

    猜你喜欢
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 2017-07-14
    • 2011-04-18
    • 2022-08-18
    • 2021-11-03
    • 2018-06-14
    相关资源
    最近更新 更多