最近我開始對主分支進行一些更改以添加featureX。我創建了1個新文件並編輯了6個其他文件。我沒有犯過任何變化。目前,我想在一個單獨的分支上工作在featureX上,並保持原版不變,直到我確信featureX能夠正常工作。將未完成的更改從主分支移動到分支
我知道我應該在我開始爲featureX做出這些更改之前開始一個新的分支,但無論如何,我已經對主分支進行了未提交的更改,並將其恢復爲主分支featureX狀態?
最近我開始對主分支進行一些更改以添加featureX。我創建了1個新文件並編輯了6個其他文件。我沒有犯過任何變化。目前,我想在一個單獨的分支上工作在featureX上,並保持原版不變,直到我確信featureX能夠正常工作。將未完成的更改從主分支移動到分支
我知道我應該在我開始爲featureX做出這些更改之前開始一個新的分支,但無論如何,我已經對主分支進行了未提交的更改,並將其恢復爲主分支featureX狀態?
創建一個新的分支(git checkout -b your_new_feature
)應該做的工作 - 否則,你可以試試這個:
git stash
git checkout -b your_new_feature
git stash apply
你需要的是stash
掉的變化,然後應用到其他地方:
git stash
git checkout -b other_branch
git stash apply
瞭解更多關於git stash
here。
正如我剛纔瞭解到(和嘗試過),可以真正地檢出到你的分支和Git會記住哪些文件發生了變化。所以
git checkout -b other_branch
應該足夠了。
注意:重要的是也要學會git stash
。在這種情況下,沒有問題。但是,如果other_branch
已經存在,它可能會有自己的更改,因此可能會有合併衝突。在這種情況下,簡單地寫
git checkout other_branch
可能會失敗,這樣的消息:
error: You have local changes to 'whatever'; cannot switch branches.
在這種情況下,你應該使用上面的方法和git stash apply
後,解決可能發生的衝突。
實際上,你可以切換樹枝和提交這些更改該分支,然後回到主。否則,你可以做'git stash'。 – birryree 2012-07-11 15:36:08