2012-02-26 61 views
2

我正在使用分階段和未分階段更改的混合功能分支。高優先級的任務進來,我該怎麼做?突發高優先級任務的Git工作流程

看起來git checkout不會觸及分階段和未分階段的更改。所以,我應該:

git add -A 
git commit -am "must stop working to fix bug!" 
git checkout master 
git checkout -b "bug_branch" 

回答

1

有關git的絕妙之處在於,它能夠爲您提供多種實現目標的方式,讓您可以將git調整爲適合您的工作流程,而不是將自己的工作流調整爲git。

有多種方法可以做到這一點,如:

藏匿的更改,然後切換到錯誤的分支,然後應用藏匿時,你與你的bug修復完成。

本地提交更改,切換到錯誤分支修正錯誤,然後修正內容本地提交歷史與git rebase -i

提交當前更改到一個新的本地分支,切換到錯誤的分支,修復bug ,然後將您的更改從本地臨時分支合併回您的功能分支。

+0

感謝您的多種選擇。對於下一個讀者來說,這將是很好的例子。 – 2012-02-28 05:02:50

7

可以暫時提交您的工作使用git stash save藏匿,修復錯誤或做你需要做的任何高優先級的任務,然後用git stash apply應用藏匿回來繼續工作。

http://book.git-scm.com/4_stashing.html

+1

的'git的stash'一個特別的優點是,它節省了工作樹和索引,並恢復雙方,這是如果你關心這個區別的話,這很有用 – 2012-02-26 22:31:31

0

git stash是你的朋友。假設你是你bug_fix分支

git stash save "must stop working to fix bug!" 
git checkout master 
.. do some stuff 
git commit -am 'foo' 
git checkout bug_fix 
git stash pop 

注意,「git的藏匿處彈出」恢復藏匿的變化,這是你想要的最長時間。如果您想要將更改應用於存儲並將其保存在存儲中,請使用git stash apply。如果你想你的藏匿適用於多個分支這是有用的:

git checkout branch1 
git stash apply 
git checkout branch2 
git stash apply 
git checkout branch3 
git stash apply