在分支上合并 main 后,出现了来自另一个合并分支的意外提交记录

问题描述 投票:0回答:1

树枝插画

如果可以的话,请看一下图片,我觉得这样更容易理解

git rebase --onto main HEAD~7 导致意外提交,而不是单个“合并提交”

所有 PR 都被接受为“压缩并合并”以更新 main

我想要实现的目标: 我试图在分支 A 上运行

git merge main
,因为 main 已经更新了 3 次,我想要获得新的更改

我的期望: 正常的

git merge main
通常只生成一个提交记录,并且 main 中的所有新内容都将被提取并拉入我的工作分支 (A)

我已经尝试过并得到了什么

  • git merge main
    : 出现了 9 个提交,它们是: 1. 由合并 main 生成的正常提交信息 2. 3 从 main 提交信息,因为它在创建分支 (A) 后已更新 3 次 3. 5 提交信息从B分行

  • git rebase main
    :来自远程 A 的 7 个提交等待拉取,15 个本地提交等待推送(3 个主分支 + 5 个分支 B + 7 个分支 A)

  • git rebase --onto main HEAD~7
    :与rebase基本相同(目前我在这个分支A上有7次提交,所以我使用了HEAD~7)

  • git rebase -i main
    : VIM 中出现了分支 A 的 7 个提交,我输入了
    :wq
    ,这对我来说都是必需的,运行的结果就像 rebase 和 rebase HEAD~7

git git-merge git-rebase git-merge-conflict
1个回答
0
投票

你有:

        b--...-b (Branch B, 5 commits)
       /        \
  m---m----m-----m---m---m (Branch main, 3 new commits)
            \
             a---a...a (Branch A, 7 commits)

请注意,rebase --onto main A B将所有内容变基after提交A(不包括A)到B(如果未指定则为HEAD)。

最好:

  • 确保
    git status
    干净
  • git pull 已在目标分支上完成(您要变基的分支:
    main
  • 明确指定 A 和 B。

即:

git switch main
git pull
git rebase --onto main A~7 A
git switch main
git merge --no-ff A

这应该给你:

        b--...-b (Branch B, 5 commits)
       /        \
  m---m----m-----m---m---m-------------m  (Branch main, A merge non-fast-forward)
                          \           /
                           a'---a'...a' (Branch A rebase onto main, 7 commits)
© www.soinside.com 2019 - 2024. All rights reserved.