将大量提交复制到新分支

Fil*_*ton 4 git

我有三个分支:

  • releaseX
  • 开发
  • topicA

releaseX是支发展两周前也许.

topicA很久以前就已经开发出来了.因为我们知道它最终会被合并到一个发布分支中,所以我们不断将开发合并到它中.不幸的是,我们现在有大量的开发提交,我们在releaseX分支中不需要.

这是我的场景图:

      (releaseX)
     /
A---B---C---D---E---F---G---H (develop)
                     \
                      S---T---X---Y (topicA)
Run Code Online (Sandbox Code Playgroud)

上面,我需要继续提交S T X Y,但需要摆脱CE.有问题的提交数量大约是50或更多,但显然我无法在这里说明.

我的目标是创建一个基于releaseX的分支,其中包含来自topicA的 50多个相关提交.我尝试在releaseX上创建一个新的分支,然后在topicA重新定义新的分支,但这不允许我排除我不想要的提交.

基于releaseX将这50多个提交"挑选"到一个新分支(topicA_clean)的最佳方法是什么?

Ani*_*pis 5

这里使用的解决方案git cherry-pick(使用git --version> = 1.7.2):

可以cherry-pick轻松地提交提交列表:

$ git cherry-pick -x <commit-hash-1> <commit-hash-2> <...> <commit-hash-X>
Run Code Online (Sandbox Code Playgroud)

我喜欢使用该-x选项以便稍后能够找到原始提交


如果你碰巧有一个你想要的提交列表,cherry-pick你可以使用一点点命令行魔术:

$ cat cherry-pick-hashes.md | xargs git cherry-pick -x
Run Code Online (Sandbox Code Playgroud)