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

时间:2017-05-02 23:34:05

标签: git version-control branching-and-merging git-checkout

我有一个看起来像这样的git仓库:

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

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

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

c4 mainline已进行代码审核,我得到建议后必须修改c4 mainline。但是,更改未显示在c4的{​​{1}}中。我有什么办法可以将my branch的{​​{1}}更改为c4的{​​{1}}吗?

修改:最终我必须将mainline合并到c4并推送my branch进行审核。

2 个答案:

答案 0 :(得分:2)

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

解决问题的方法是从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

答案 1 :(得分:0)

我认为你的意思是c5 my branch

您应该能够在git rebase -i mainbranch上运行my branch,然后提交结果,以获取mainline的所有后续提交。这会使c5超过您在mainbranch上所做的任何更改。

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

第三种选择是选择使用mainbranchmy branch的哈希值进行任何提交。

请参阅:https://git-scm.com/docs/git-rebase