對於我的項目,我使用git-flow。我有master
和develop
分支與remote-repo同步 通常爲了所有更改我創建了feature
分支,編輯文件,在feature
分支上提交更改並使用develop
中的合併關閉分支。將開發變更移至新功能分支
但有時我忘了創建一個feature
分支,我直接在develop
中編輯文件。我該如何將這些裝置移動到新的feature
分支中?
對於我的項目,我使用git-flow。我有master
和develop
分支與remote-repo同步 通常爲了所有更改我創建了feature
分支,編輯文件,在feature
分支上提交更改並使用develop
中的合併關閉分支。將開發變更移至新功能分支
但有時我忘了創建一個feature
分支,我直接在develop
中編輯文件。我該如何將這些裝置移動到新的feature
分支中?
如果你已經做了承諾develop
,和你的歷史是這樣的:
A---B---C---D develop
這裏,C
是develop
的最後一次正確提交,D
應該已被提交到功能分支。請執行下列操作(同時develop
):
git branch feature # creates feature branch pointing at D
git reset --hard C # or HEAD^, HEAD~1, etc - resets develop back to C
這將導致:
A---B---C develop
\
D feature
這也將工作做好,如果你做了一個以上的承諾,你可以代替任何一個犯參考您需要在第二個命令中重置develop
。
假設你已經本地提交這些變化並沒有推,你可以使用軟復位:
git reset --soft HEAD~1
git checkout feature
git commit
只是要軟復位提交的數目更換1 git reset --soft HEAD~1
。
還可以使用Git藏匿於將本更改一個新的分支,看到主git book
所以,你所做的更改後(但沒有添加或提交他們),你可以這樣做:
git stash //stashes the changes
git stash branch featurebranchname //creates a new branch and applies the stash to it
你可以櫻桃挑選新分支的變化。
從你的回答中不清楚你需要在運行'git stash branch'命令之前運行'git stash'。 –
非常感謝,我仔細檢查並編輯了我的答案。 – wmk