【问题标题】:Git copy from branch to master and save all commitsGit 从分支复制到 master 并保存所有提交
【发布时间】:2021-02-01 12:58:43
【问题描述】:

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

我找到了两个解决方案:

  1. Git merge,但我的 x-y-z 变成了 1 个合并提交,这不是我想要的。
  2. Git cherry-pick,但我需要为辅助分支中的每个提交都这样做。挑选 x,然后挑选 y,然后挑选 z。这太复杂了。

那么,是否可以像之前的方案那样做一些“复制”方法来获得结果?

【问题讨论】:

标签: git git-merge git-cherry-pick


【解决方案1】:

如果您还没有将x-y-z 分支推送到远程,您可以执行git rebase master。这不会“复制”,而是在d 提交之上“移动” x-y-z 提交。您会丢失提交的确切时间和日期,以及它们的 sha 哈希应该更改,因为 rebase 的实际作用是在 d 提交之上重放您的提交。

【讨论】:

  • 是的,rebase 将我的分支更新到 master 之上。但是接下来该怎么办?
  • 没什么。你得到了你想要的:x-y-z 在 a-b-c-d 之上提交。
  • 但我需要它们在master中。
  • 之后做git merge master --ff-only
  • 在这种情况下git checkot mastergit merge task_branch --ff-only。这也有效,谢谢您的建议。
【解决方案2】:

所以,正确的答案是范围内的樱桃挑选。首先,您需要首先记住提交的 SHA 代码。结帐给您的二级分支并输入git log -5。然后结账大师。并使用带有参数的 cherry-pick 最新提交 ^ 以包含它和范围的最早提交:

git cherry-pick (SHA-code of z)^..(SHA-code of x)

如果你有冲突,解决它并输入

git cherry-pick --continue

【讨论】:

    猜你喜欢
    • 2020-05-04
    • 2019-08-14
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2020-07-16
    相关资源
    最近更新 更多