在不同的分支上重播最后N个git提交

Tom*_*man 44 git version-control commit

当我打算将它们提交给分支"master"时,我意外地在分支"测试"上做了10次提交."测试"分支上的其他提交是垃圾,所以我不想将它与"master"合并.相反,我只想重播master上的最后10次提交.

Tal*_*joe 92

Rebase应该这样做.

git rebase -p --onto master testing~10 testing
Run Code Online (Sandbox Code Playgroud)

这将复制测试的最后十个提交以掌握并进行新测试(旧测试将是一个孤儿).然后,您可以将master作为快进合并到测试中.

git checkout master
git merge testing
Run Code Online (Sandbox Code Playgroud)

  • 也许值得注意的是,这与主人在同一点上进行测试,让"垃圾"提交成为孤儿.这可能是也可能不是好事.另一种可能性是git checkout master; git reset - 硬测试; git rebase --onto HEAD @ {1} HEAD~10 (9认同)

Ron*_*Ron 19

  1. git checkout master
  2. git whatchanged测试
  3. git cherry-pick _________

  • @PatNotz`git cherry-pick`目前一次可以进行多次提交(例如`git cherry-pick testing~10..testing`). (10认同)
  • 只是一个fyi - cherry-pick一次只能做一次提交,所以你必须进行樱桃纠察测试~9然后测试~8然后......测试.这就是为什么我更喜欢Talljoe建议的rebase方法......当然结果是一样的.事实上,如果你以交互方式进行rebase,git实际上会使用引擎盖下的樱桃. (5认同)
  • @Tim 从来都不是一个可以随便乱说的强词。 (4认同)
  • @prasanthv 你是对的,我的意思是:永远不要使用 ``cherry-pick`` 作为工作流程的基础。Git 的“cherry-pick”在其他情况下是一个非常有用的特性,但不应该用于将提交从一个分支移动到另一个分支,有更好的工具:) (3认同)