我有一个看起来像这样的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
进行审核。
答案 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
应同时更改c4
和c5
答案 1 :(得分:0)
我认为你的意思是c5
my branch
。
您应该能够在git rebase -i mainbranch
上运行my branch
,然后提交结果,以获取mainline
的所有后续提交。这会使c5
超过您在mainbranch
上所做的任何更改。
其次,您可以从git merge mainline
运行my branch
,但这会产生新的合并提交,但这并不总是令人满意。
第三种选择是选择使用mainbranch
到my branch
的哈希值进行任何提交。