2011-03-08 59 views
2

我在我的本地git倉庫中有兩個分支:masteranotherbranch。當我從master切換到anotherbranchgit checkout anotherbranch並運行git status我看到修改後的文件。爲什麼工作目錄中的文件在Git分支之間切換時獲得修改狀態?

我用git reset HEAD取消這些修改,然後git status不顯示它們。但是,當我切換到主並切換到分支後,我再次看到這些修改後的文件。

你能解釋一下發生了什麼嗎?

+0

修改後的文件是否在兩個分支中被跟蹤?或者只在其中一個? – Amber

+1

有些事情你沒有告訴我們,或者不清楚,因爲上述情況,正如你所描述的,是不可能的。你可以在你的問題中包含你的git命令的實際輸出嗎? –

+0

我很想看看如何以一步一步的方式重現這一點。我試圖根據我所做的一些假設重新創建它,但不能。 – Tone

回答

1

如果項目沒有在任一分支跟蹤,這些文件將在git statusuntracked顯示,和整個檢出

3

你不會autocrlf set to true將求生存,以任何機會呢?
因爲它可以改變你的文件上籤出...

見線程「core.autocrlf considered half-assed」:

那時候,我是不是該core.autocrlf支持的粉絲。
*但我不得不承認,在此期間,我變成了一個徹頭徹尾的特徵粉絲。不是因爲它的意圖是錯誤的,而是因爲它的實現是糟糕的。

只要嘗試到git reset --hardgit stash當有DOS行結尾的文件和core.autocrlf不是false時。

然後絕望。

+0

@Mark:我的設置歷史悠久......有理由將其設置爲true(http://stackoverflow.com/questions/2825428/why-should-i-use-core-autocrlf-true -in-git),但還有其他方法:http://stackoverflow.com/questions/2332349/best-practices-for-cross-platform-git-config – VonC

+0

我通常建議Windows用戶,他們unset core.autocrlf只需使用足夠複雜的工具來處理不同的行結尾。我承認這是警察,但它排除了這麼多混亂的問題。 –

1

git reset --hard將刪除索引中的修改。嘗試使用這個附加參數後,應該可以。

相關問題