重播修改为在另一个分支上提交的更改
replay changes ammended to commit on another branch
我有:
1) 创建了 branch1
2) 在 branch1
本地提交 commitA1
3) 结帐到 branch2
(已应用 commitA1
)
4) 现在,在 branch2
我做了一些其他的提交(commitB1
、commitB2
等),所以它看起来像:
----commitB2-----
----commitB1-----
----commitA1-----
5) 然后,我又回到了 branch1
因为我需要改变一些东西。我已将这些更改修改为 commit1A
6) 我意识到我在 branch2
上也需要那些最近的修改。
在这里,我的问题是:如何以最快的方式将这些更改应用到 branch2
?我想保存现有层次结构,因此我希望将此更改应用于 branch2
上的 commitA1
(因此在 commitB1
和 commitB2
之前)。
我以为我可以cherry-pick
,但它会产生合并冲突,解决后看起来像:
----commitA1-----
----commitB2-----
----commitB1-----
----commitA1-----
谢谢。
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 后编辑并删除提交 A1
- 保存并关闭编辑器,这将启动变基。
- rebase 在 foo 之后停止。然后,通过
git apply patch
应用补丁,删除补丁文件,git add
更改,以及 git commit
它们(没有 --amend)。
git rebase --continue
恢复 rebase,它应用 commitB1 和 commitB2。
我有:
1) 创建了 branch1
2) 在 branch1
commitA1
3) 结帐到 branch2
(已应用 commitA1
)
4) 现在,在 branch2
我做了一些其他的提交(commitB1
、commitB2
等),所以它看起来像:
----commitB2-----
----commitB1-----
----commitA1-----
5) 然后,我又回到了 branch1
因为我需要改变一些东西。我已将这些更改修改为 commit1A
6) 我意识到我在 branch2
上也需要那些最近的修改。
在这里,我的问题是:如何以最快的方式将这些更改应用到 branch2
?我想保存现有层次结构,因此我希望将此更改应用于 branch2
上的 commitA1
(因此在 commitB1
和 commitB2
之前)。
我以为我可以cherry-pick
,但它会产生合并冲突,解决后看起来像:
----commitA1-----
----commitB2-----
----commitB1-----
----commitA1-----
谢谢。
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 后编辑并删除提交 A1
- 保存并关闭编辑器,这将启动变基。
- rebase 在 foo 之后停止。然后,通过
git apply patch
应用补丁,删除补丁文件,git add
更改,以及git commit
它们(没有 --amend)。 git rebase --continue
恢复 rebase,它应用 commitB1 和 commitB2。