Git 从分支复制到主控并保存所有提交
Git copy from branch to master and save all commits
我想将 x-y-z
复制到 master,所以结果是 a-b-c-d-x-y-z
我找到了两个解决方案:
Git merge
,但我的 x-y-z
变成了 1 个合并提交,这不是我想要的。
Git cherry-pick
,但我需要为二级分支中的每个提交执行此操作。 Cherry-pick x,然后 cherry-pick y,然后 z。太复杂了。
那么,是否可以做一些“复制”的方法来达到之前方案中的结果?
如果您还没有将 x-y-z
分支推送到远程,您可以执行 git rebase master
。这不会“复制”,而是在 d
提交之上“移动”x-y-z 提交。您将丢失提交的确切时间和日期以及它们的 sha 哈希应该更改,因为 rebase
有效地做的是在 d
提交之上重播您的提交。
因此,正确答案是范围内的樱桃挑选。首先,您需要记住首先提交 SHA 代码。结帐到您的二级分支并输入 git log -5
。然后结账师傅。并使用 cherry-pick 和 params latest commit with ^
来包含它和范围的最早提交:
git cherry-pick (SHA-code of z)^..(SHA-code of x)
如果有冲突,请解决并输入
git cherry-pick --continue
我想将 x-y-z
复制到 master,所以结果是 a-b-c-d-x-y-z
我找到了两个解决方案:
Git merge
,但我的x-y-z
变成了 1 个合并提交,这不是我想要的。Git cherry-pick
,但我需要为二级分支中的每个提交执行此操作。 Cherry-pick x,然后 cherry-pick y,然后 z。太复杂了。
那么,是否可以做一些“复制”的方法来达到之前方案中的结果?
如果您还没有将 x-y-z
分支推送到远程,您可以执行 git rebase master
。这不会“复制”,而是在 d
提交之上“移动”x-y-z 提交。您将丢失提交的确切时间和日期以及它们的 sha 哈希应该更改,因为 rebase
有效地做的是在 d
提交之上重播您的提交。
因此,正确答案是范围内的樱桃挑选。首先,您需要记住首先提交 SHA 代码。结帐到您的二级分支并输入 git log -5
。然后结账师傅。并使用 cherry-pick 和 params latest commit with ^
来包含它和范围的最早提交:
git cherry-pick (SHA-code of z)^..(SHA-code of x)
如果有冲突,请解决并输入
git cherry-pick --continue