2012-07-27 54 views
1

我在我的項目在Linux上工作,並將我的工作推到我的git倉庫。我將項目目錄(包括.git目錄)複製到我的Windows機器上,以便從那裏開始工作。現在,當我執行git status時,我得到了大量的修改文件,每一個項目文件。所以git認爲每個新文件都是一個更改過的文件,因爲我複製了它。有沒有辦法讓git檢查,看到文件是相同的,並從更改的文件列表中刪除它們?複製的文件顯示爲已更改

+0

你確定你在做'git status'而不是'git diff'嗎?因爲'git status'更新緩存,所以它不會報告沒有實際變化的文件。 Git diff不會。 – 2012-07-27 09:48:27

+0

複製時文件權限發生了什麼變化? – pmr 2012-07-27 09:49:20

+0

@JanHudec我在做git身份。我只是開始使用git,所以我直到你的答案才真正瞭解git diff。 – ppp 2012-07-27 09:50:07

回答

3

複製包括從Linux到Windows或反之亦然的工作樹的git存儲庫是壞主意,因爲它也複製配置,在其他平臺上幾乎肯定是錯的。所以簡單的解決方案是只是不這樣做,並使用克隆(注意,克隆工作在桑巴,雖然它會比非本地網絡慢)。

該問題可能是因爲從一個系統複製到另一個系統的git配置(在.git/config中)不合適,或者默認或系統範圍的配置使git期望工作樹與其他系統上的配置看起來有所不同。我可以想到3個系統特定的設置:

  1. 換行符。很可能你的Windows git默認轉換換行符,因此它希望工作目錄包含帶有Windows CR/LF換行符的文件,但它會在那裏看到帶有Unix LF換行符的文件。有一個新的和新的方式來設置這個,新的不應該這樣做。而不是取決於你是否真的想要進行轉換;我發現我幾乎從不做。

  2. 可執行權限處理。在Windows上沒有可執行的位,所以有一些選項會告訴系統忽略對它的更改,但是從UNIX複製的存儲庫會將其設置爲錯誤。

  3. 這同樣適用於符號鏈接處理。

+0

我之所以複製並沒有克隆的原因是我的項目有一些xml配置文件,包括db密碼,所以我在Git中忽略它們,但仍需要它們來運行程序。除忽略這些文件外,還有其他方法嗎? – ppp 2012-07-27 10:08:38

+0

@安培:克隆回購,然後複製這些文件?我之前見過的另一件事是將項目特定的密碼放入使用GPG加密的文件中,然後進行運行/編譯時提取過程,以提示解密密碼。 – 2012-07-27 10:52:07