我只有一个分支有 git repo
A-B-C-D-E (master)
我想将提交 B、C 和 D 拆分到另一个名为develop的分支
A-E (master)
\
B-C-D (develop)
最简单的方法是什么?无需关心远程回购。是否cherry-pick
只是将提交复制到另一个分支?我认为rebase
是必要的,但我以前没有使用过它,我想在第一次尝试时就拥有这个权利:)
有一些相关的问题,但这些问题没有最后一次提交 E 需要处理。
我只有一个分支有 git repo
A-B-C-D-E (master)
我想将提交 B、C 和 D 拆分到另一个名为develop的分支
A-E (master)
\
B-C-D (develop)
最简单的方法是什么?无需关心远程回购。是否cherry-pick
只是将提交复制到另一个分支?我认为rebase
是必要的,但我以前没有使用过它,我想在第一次尝试时就拥有这个权利:)
有一些相关的问题,但这些问题没有最后一次提交 E 需要处理。
这两个命令应该可以解决问题:
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)
我希望能帮助你。