【问题标题】:How to fix commit history between two branches?如何修复两个分支之间的提交历史?
【发布时间】:2022-07-06 21:00:08
【问题描述】:

我有两个分支:maindevelopdevelop 落后于 main 1 次提交。

所以main 有 3 次提交:

C1 - C2 - C3

main 位于C2 时,我创建了develop 分支。现在我在develop 中进行了一系列提交,然后将main 重新定位为develop,运行命令git rebase main。与main 相比,develop 的提交图如下所示,

main:        C1 - C2 - C3
develop:     C1 - C2 - C4 - C5 - C3

现在,我如何修复develop 以使提交历史记录如下:

C1 - C2 - C3 - C4 - C5

【问题讨论】:

  • 你的图表是错误的。如果将 main 合并到 develop 中,develop 的最后一次提交不是 C3。这是一个合并提交。
  • 你描述的情况根本不可能发生。 Commit C3maindevelop 中用不同的父母表示,这是不可能的。尝试更好地表示您的分支和提交(可能只是 git log --all --graph --oneline --decorate 输出)。无论如何,您的解决方案可能是develop 的交互式变基
  • 听起来您只是在说您希望将开发重新定位到 main 上,而不是将 main 合并到开发中。这是一件完全可行的事情。只需删除合并提交并执行变基即可。
  • @matt 对不起,我的意思是变基不合并。我的错。我做了rebase,git在C5上方添加了提交C3,如图所示。我运行了命令git rebase main
  • 不,该图也不能正确表示如果您重新设置基准会发生什么。

标签: git github


【解决方案1】:

很难确定,因为您的图表不连贯,但听起来您的意思可能是

git switch develop
git reset --hard @^1
git rebase main

这会给

C1 - C2 - C3 (main)
            \
             - C4 - C5 (develop)

【讨论】:

    猜你喜欢
    • 2013-06-03
    • 2021-03-27
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 2023-02-20
    • 2021-01-01
    相关资源
    最近更新 更多