2011-11-28 98 views
1

我有一個在master分支上修改的跟蹤文件(舊版本文件)。 主分支上的狀態將此文件顯示爲已修改,但 主題分支上的狀態也顯示此文件已被修改。當「git status」顯示所有分支上的跟蹤文件更改時,「git checkout -f」有什麼用處

此前有一個錯誤「錯誤:您有本地更改爲」X「;無法切換分支」當我簽出另一個分支沒有做一個藏匿或沒有使用「-f」在git結帳。

我已選中「stackoverflow.com/questions/1304626/git-switch-branch-and-ignore-any-changes-without-committing」,但該錯誤不會發生,即使在本地更改時也能夠結帳。

是否有任何類型的配置導致這種混淆?

回答

2

看起來您正在切換到的分支與您來自的分支處於相同的狀態。每個分支都是提交樹上的一個指針。因此,如果兩個分支point to the same set of commits,您可以在它們之間切換而不檢查本地更改。原因是,除非你真的提交了修改,否則git你提交給哪個分支並沒有什麼不同。但是,一旦你承諾改變,那麼一個分支擁有它,另一個不具備,他們的歷史現在不同。

0

嘗試

git reset --hard HEAD 

在主

+0

重置將刪除兩個分支上的更改。我想知道爲什麼GIT在兩個分支上顯示相同的更改 –

+0

如果您在主服務器上運行它,則只有在主服務器上reset纔會刪除未提交的更改 – slashmili

+0

如果您所說的更改沒有提交給其他分支我想您沒有提交更改在第一個分支中,您只需簽出而無需提交 – slashmili

5

除非你提交,修改後的變化是不屬於任何分支的一部分,但也適用於你的工作目錄,檢查出另一個分支會帶來這些變化的其他分支也是如此(除非有衝突)

如果您不希望在master中進行的更改在其他分支中檢查時發生,請提交更改或存儲它們。

+0

謝謝,但之前出現了一條消息,如「錯誤:您對」X「進行了本地更改;無法切換分支。」現在這個不顯示,有沒有變化? –

+0

@SenthilAKumar - 看看這裏http://stackoverflow.com/questions/1304626/git-switch-branch-and-ignore-any-changes-without-committing – manojlds

+0

它說:「你需要一個乾淨的狀態來改變分支(只有當分支變更影響'髒文件'時,正如Charles Bailey在評論中所說的那樣)「但即使當我有骯髒的變化時,我也可以在沒有-f選項的情況下切換分支 –

相關問題