繁体   English   中英

将一些提交移动到另一个分支

[英]Move some commits to another branch

我只有一个分支机构的git repo

A-B-C-D-E (master)

我想将提交B,C和D拆分到另一个名为develop的分支

A-E (master)
 \
  B-C-D (develop)

最简单的方法是什么? 无需关心远程回购。 cherry-pick只是将提交复制到另一个分支? 我认为需要使用rebase ,但我之前没有使用它,我想在第一次尝试时正确使用它:)

有一些相关的问题,但这些没有最后的提交E需要处理。

这2个命令应该可以解决问题:

git branch develop D #create develop branch

git rebase --onto A D #make everything after D sit on top of A

请注意,几乎可以肯定在运行rebase命令时会出现一些冲突。 修复它们之后,只需运行git add . git rebase --continue

我认为这不太可能,你想要什么。 但结果几乎相同:

git checkout D  # checkout (step) to the D commit /this does not modify the master branch/
git branch develop  # create develop branch, based on D
git checkout develop # now you stand on D commit
git push origin develop # push the new branch to repo, named origin
git checkout master # now you stand on E commit again

这是创建开发分支的方法。 Anyvaw分支指向提交。 或者如果你更喜欢这个,那么分支只是提交图中提交的别名。 想象一下,我们可以在提交图中考虑一条道路,但实际上它并不是我想的。 (提交时创建的提交图的真实边缘(旧提交和新提交之间的边缘)或者合并两个提交(新提交之间的边缘和两个“父”提交之间的边缘))

看结果:

git log --graph --decorate --pretty=oneline --abbrev-commit --all

   A-B-C-D-E (master)
         \-D (develop)

我希望可以帮到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM