2013-11-25 174 views
1

如何切換分支並仍保留當前分支更改?切換分支並保留Git中的當前分支更改

請考慮這種情況。

我正在處理一個問題,並根據我們的開發模式,我創建了一個單獨的分支並開始處理它。我創造了我使用

git checkout -b new_branch

現在它工作正常,當我做這個分支的任何更改新的分支。

但之後我忘了切換回默認本地分支(比如說「本地」),由於系統重啓。

現在我開始研究我的修復,並突然意識到我在「本地」分支。現在因爲我必須提交我的更改並將其與主人合併。

我試圖做

git checkout new_branch

但我不斷收到此錯誤,說:

error: Your local changes to the following files would be overwritten by checkout: content/some/blah/blah/path_name/file.jsp

Please, commit your changes or stash them before you can switch branches. Aborting

如何切換到new_branch,仍然保持自己在當地的分支機構的變化,我想實際上在new_branch中提交。 PS: - 存儲不是一個選項。在本地分支上也沒有git checkout。我想保留更改。

+1

爲什麼存儲不是一個選項?這是這種情況下要走的路。 (在應用隱藏更改時,您可能需要手動解決衝突) – knittl

+0

實際上,當我執行「git stash pop」時,會發生合併衝突。這就是爲什麼我不想做混帳存儲。有什麼方法可以解決這些衝突嗎? - –

+0

是的,會有的。您將相同的線條或線條彼此靠得太近。沒有辦法繞過它(Git無法弄清楚哪個變化是「真正的」變化)。手動修復衝突。 – knittl

回答

9

只需暫時存儲更改並立即在切換分支後立即彈出它們。

git stash 
git checkout new_branch 
git stash pop 
+0

實際上當我做「Git Stash Pop」時會出現合併衝突。這就是爲什麼我不想做混帳存儲。有什麼方法可以解決這些衝突嗎? –

+0

是的,像任何其他合併衝突一樣解決這些衝突。 – Manuel

+1

一般來說,你將無法避免衝突。畢竟,你用一個代碼視圖編寫了你的​​修改,並試圖將它們應用到不同的視圖。如果這兩個視圖之間的文件發生了變化,那麼這個差異就不會適用。 –

相關問題