Git 从分支复制到主控并保存所有提交

Git copy from branch to master and save all commits

我想将 x-y-z 复制到 master,所以结果是 a-b-c-d-x-y-z

我找到了两个解决方案:

  1. Git merge,但我的 x-y-z 变成了 1 个合并提交,这不是我想要的。
  2. 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