【问题标题】:How to add a sequence of commits to another branch?如何将一系列提交添加到另一个分支?
【发布时间】:2013-04-19 07:38:59
【问题描述】:

在git中,如何应用提交序列“D-E”

master       A-B
                \
py3-version      C-D-…-E

回到master,从而获得

master       A-B - <D patch applied> - <…> - <E patch applied>
                \
py3-version      C-D-…-E

我想这样做是因为master 是 Python 2 版本,C 是 Python 3 版本自动生成(通过2to3),我需要改进(@ 987654327@ 至 E)。现在,我想将改进 DE 放回 master 分支(最终忘记 Cpy3-version,它们将从新的 master 分支重新生成)。如何做到这一点?

【问题讨论】:

  • 这个答案可能会有所帮助:stackoverflow.com/a/16212454/1615903
  • @user1615903:完美,确实,谢谢!我曾尝试使用旧版本的 git git cherry-pick &lt;range&gt; 并认为它不起作用,因此出现了上述问题。很高兴知道它现在起作用了!

标签: git branch


【解决方案1】:

这在 git lingo 中称为cherry-picking,您可以在其中有选择地将更改从一个分支导入另一个分支:

git checkout master
git cherry-pick py3-version~10..py3-version

这将从“py3-version”分支中挑选最后 10 个提交。

如果发生冲突,系统会提示您手动解决它们。然后你应该用git cherry-pick --continue(或git cherry-pick --abort,如果出现问题)继续挑选樱桃。

【讨论】:

  • 我猜你的意思是git cherry-pick py3-version~2 py3-version~1,不是吗?我更新了问题以明确表明它实际上比两次提交的情况更普遍。我想使用范围 py3-version~10..py3-version~1 是要走的路,不是吗?
  • PS:py23-version~10 是最后一个未应用补丁。
  • 谢谢。我添加了有关如何处理冲突的详细信息 (--continue),因为它对于初次使用 cherry-pick-with-conflict 的用户非常有用。
猜你喜欢
  • 2010-12-31
  • 2011-05-06
  • 1970-01-01
  • 2018-03-12
  • 2012-12-03
  • 2016-09-15
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
相关资源
最近更新 更多