即如何从去
master : A-B-C-D-E-F-G
至
master: A-B-E-F-G \ feature: C-D
显然,它现在很清楚,CD本来应该在一个特性分支,为改变现在推迟。
这是一个微妙的不同问题我见过的人在这里和这里
即如何从去
master : A-B-C-D-E-F-G
至
master: A-B-E-F-G \ feature: C-D
显然,它现在很清楚,CD本来应该在一个特性分支,为改变现在推迟。
这是一个微妙的不同问题我见过的人在这里和这里
这个答案假定您要么没有主推或者你的项目(在这种情况下,它并不重要)工作的唯一的人。 如果您有推主人和别人拉你的变化,你需要与他们沟通,以确保他们适当地更新自己的资料库。
# Assuming you're on master
git branch <feature> <D> # Create a branch named <feature> at commit <D>
git rebase --onto <B> <D> master # Transplant branch
Git的底垫文件有什么不错的图形解释rebase --onto
一样。
如果你想避免rebase
干脆,你应该能够做到
git branch <feature> <D> # Create a branch named <feature> at commit <D>
git revert <D> # undo D
git revert <C> # undo C
这将导致在这样的历史
A-B-C-D-E-F-G-!D-!C
^ ^
feature master
任何人谁检查出的主 ,会看到写代码,好像犯C和d从来没有发生过,你只需要一对夫妇就回到你的历史。 这是打了退堂鼓已推入一个分支的变化的首选方式。
起始于HEAD
的(G) master
:
git branch feature D # Create new branch at D.
git rebase -i B # Use interactive rebase to remove C D from master.