我有:
1)创建了branch1
2)在commitA1
branch1
3)结帐到branch2
(commitA1
已应用)
4)现在,在branch2
我已经做了一些其他提交(commitB1
,commitB2
等),所以它看起来像:
----commitB2-----
----commitB1-----
----commitA1-----
5)然后,我回到branch1
因为我需要改变一些事情。我已将这些更改归功于commit1A
6)我意识到我还需要branch2
上最近修改过的更改。
在这里,我的问题是:如何以最快的方式将这些更改应用到branch2
?我想保存现有的层次结构,因此我希望将此更改应用于commitA1
上的branch2
(因此在commitB1
和commitB2
之前)。
我认为我可以cherry-pick
,但它会产生合并冲突,并在解决后看起来像:
----commitA1-----
----commitB2-----
----commitB1-----
----commitA1-----
感谢。
答案 0 :(得分:1)
checkout branch2
和git reset --hard HEAD^
撤消cherry-pick
。git format-patch branch1^..branch1 --stdout > patch
制作应用已修改commit1A
。 git rebase -i HEAD~4
,打开一个包含以下内容的编辑器:
pick ed4dcf2 foo
pick 6af0cca commitA1
pick e9cfa08 commitB1
pick d9856c4 commitB2
(snip)
编辑如下内容:
e ed4dcf2 foo
d 6af0cca commitA1
pick e9cfa08 commitB1
pick d9856c4 commitB2
这意味着将在提交foo之后编辑并删除commitA1
git apply patch
应用修补程序,删除修补程序文件,git add
更改,git commit
(不使用--amend)。git rebase --continue
恢复rebase,它应用commitB1和commitB2。