2015-05-14 43 views
5

對於我的項目,我使用git-flow。我有masterdevelop分支與remote-repo同步 通常爲了所有更改我創建了feature分支,編輯文件,在feature分支上提交更改並使用develop中的合併關閉分支。將開發變更移至新功能分支

但有時我忘了創建一個feature分支,我直接在develop中編輯文件。我該如何將這些裝置移動到新的feature分支中?

回答

9

如果你已經做了承諾develop,和你的歷史是這樣的:

A---B---C---D develop 

這裏,Cdevelop的最後一次正確提交,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

1

假設你已經本地提交這些變化並沒有推,你可以使用軟復位:

git reset --soft HEAD~1 
git checkout feature 
git commit 

只是要軟復位提交的數目更換1 git reset --soft HEAD~1

1

還可以使用Git藏匿於將本更改一個新的分支,看到主git book

所以,你所做的更改後(但沒有添加或提交他們),你可以這樣做:

git stash //stashes the changes 
git stash branch featurebranchname //creates a new branch and applies the stash to it 
+1

從你的回答中不清楚你需要在運行'git stash branch'命令之前運行'git stash'。 –

+1

非常感謝,我仔細檢查並編輯了我的答案。 – wmk

-2

你可以櫻桃挑選新分支的變化。