我的項目有一個分支master
。假設我已經執行了四次提交A
,B
,C
和D
。現在我剛剛意識到D
是太實驗了,所以它不應該在master
(還),而是在它自己的一個單獨的分支,說experimental
。從分支中刪除提交併將其放在單獨的分支上
我如何:
- 將
D
自身的一個分支? - 回到
C
作爲master
並在這個分支上執行新的提交?
(注:我不想只是取消提交)
我的項目有一個分支master
。假設我已經執行了四次提交A
,B
,C
和D
。現在我剛剛意識到D
是太實驗了,所以它不應該在master
(還),而是在它自己的一個單獨的分支,說experimental
。從分支中刪除提交併將其放在單獨的分支上
我如何:
D
自身的一個分支?C
作爲master
並在這個分支上執行新的提交?(注:我不想只是取消提交)
首先,你需要從master
branch
的experimental
分支:
[email protected] ~/src/git/myproject [master] $ git branch experimental
然後,您可以reset
的master
分支到一個承諾的背後:
[email protected] ~/src/git/myproject [master] $ git reset HEAD~ --hard
首先,在D
提交創建experimental
分支。此時它將與master
相同。
做一個git checkout master
。
做一個git reset --hard HEAD~1
。 (這使你承諾C
)
現在做一個push -f
(從主分支。這將推C
作爲最後提交在master
)。
這應該解決它。
我不知道,如果你能移動一個提交,但你可以[撤消提交](http://stackoverflow.com/questions/927358/how-do-you-undo-the-last-commit),切換分支,然後再次提交。 – GolezTrol