从另一个分支的相应提交修改分支的提交

Modifying a commit of a branch from the corresponding commit from another branch

我有一个 git 看起来像这样的回购协议:

c1->c2->c3->c4 (mainline)
              \
               \ c6->c7->c8 (other branch)

我在主线上从 c4 创建了一个名为 my branch 的新分支,并添加了一个提交 c5my branch。现在我的 git 仓库看起来像这样。

               c5 (my branch)
               /
c1->c2->c3->c4/ (mainline)
              \
               \ c6->c7->c8 (other branch)

mainlinec4 正在代码审查中,在收到建议后,我不得不修改 mainlinec4 。但是,更改不会出现在 my branchc4 中。有什么方法可以让所有 c4mainline 更改为 my branchc4

编辑:最终我将不得不将 my branch 合并到 mainline 并推送 c5 以供审核。

我认为你是指 my branch 中的 c5

您应该能够在 my branch 上 运行 git rebase -i mainbranch,然后提交结果,以获得 mainline 的所有后续提交。这将使 c5 领先于您对 mainbranch.

所做的任何更改

其次,您可以从 my branch 运行 git merge mainline,但这会产生一个新的合并提交,这并不总是可取的。

第三种选择是从 mainbranchmy branch.

中挑选任何带有散列的提交

参见:https://git-scm.com/docs/git-rebase

当您修改 mainline 分支上的提交 c4 时,您创建了一个新的提交哈希。

修复它的一种方法是从 c4 重新启动并应用 my branch:

的更改
git checkout mainline
git checkout <hash-of-c4>      # go to updated c4
git checkout -b my-branch-new  # create branch
git cherry-pick <hash-of-c5>   # apply c5

my-branch-new 应该同时具有 c4c5

的变化