我在我的項目在Linux上工作,並將我的工作推到我的git倉庫。我將項目目錄(包括.git目錄)複製到我的Windows機器上,以便從那裏開始工作。現在,當我執行git status
時,我得到了大量的修改文件,每一個項目文件。所以git認爲每個新文件都是一個更改過的文件,因爲我複製了它。有沒有辦法讓git檢查,看到文件是相同的,並從更改的文件列表中刪除它們?複製的文件顯示爲已更改
回答
複製包括從Linux到Windows或反之亦然的工作樹的git存儲庫是壞主意,因爲它也複製配置,在其他平臺上幾乎肯定是錯的。所以簡單的解決方案是只是不這樣做,並使用克隆(注意,克隆工作在桑巴,雖然它會比非本地網絡慢)。
該問題可能是因爲從一個系統複製到另一個系統的git配置(在.git/config
中)不合適,或者默認或系統範圍的配置使git期望工作樹與其他系統上的配置看起來有所不同。我可以想到3個系統特定的設置:
換行符。很可能你的Windows git默認轉換換行符,因此它希望工作目錄包含帶有Windows CR/LF換行符的文件,但它會在那裏看到帶有Unix LF換行符的文件。有一個新的和新的方式來設置這個,新的不應該這樣做。而不是取決於你是否真的想要進行轉換;我發現我幾乎從不做。
可執行權限處理。在Windows上沒有可執行的位,所以有一些選項會告訴系統忽略對它的更改,但是從UNIX複製的存儲庫會將其設置爲錯誤。
這同樣適用於符號鏈接處理。
我之所以複製並沒有克隆的原因是我的項目有一些xml配置文件,包括db密碼,所以我在Git中忽略它們,但仍需要它們來運行程序。除忽略這些文件外,還有其他方法嗎? – ppp 2012-07-27 10:08:38
@安培:克隆回購,然後複製這些文件?我之前見過的另一件事是將項目特定的密碼放入使用GPG加密的文件中,然後進行運行/編譯時提取過程,以提示解密密碼。 – 2012-07-27 10:52:07
- 1. 顛覆合併:未更改的文件顯示爲已更改
- 2. phpStorm在項目視圖中顯示已更改/已更改的文件
- 3. 爲什麼在複製文件超過其他文件時,git會將整個文件更改爲已更改?
- 4. rsync,所有文件都顯示爲已更改
- 5. 僅復原已更改的文件
- 6. Atom僅顯示灰色文件,即使其文件已更改
- 7. 在Jenkins中複製已更改的文件
- 8. Gruntjs:如何使複製任務僅複製手錶上的已更改文件
- 9. CVS:顯示本地已更改的文件
- 10. Git LFS總是顯示已更改的圖像文件?
- 11. Egit顯示已更改的所有文件
- 12. 耙 - 僅複製更改的文件
- 13. 顯示SmartGit中哪些文件已更改
- 14. Mercurial - 顯示更新期間哪些文件已被修改?
- 15. Vim - 突出顯示已更改的行
- 16. 突出顯示已更改的行
- 17. Git pull導致「需要更新」和文件顯示爲已修改
- 18. 複製文件和文件夾中的文件更改
- 19. Git沒有顯示更新後的css和html文件已更改
- 20. 複製文件並更改名稱
- 21. 使用File.Copy複製更改文件
- 22. JTree在顯示時複製文件夾
- 23. 複製文件,然後顯示
- 24. 複製文件後git status顯示修改
- 25. 使複選框顯示爲已啓用
- 26. 複選框未顯示爲已檢查
- 27. 爲什麼在文件更新時「複製如果更新」不復制文件?
- 28. 我可以使用XCOPY只複製已更改大小的文件嗎?
- 29. 複製目錄中的文件並更改文件名
- 30. 用於複製已修改文件的Windows腳本
你確定你在做'git status'而不是'git diff'嗎?因爲'git status'更新緩存,所以它不會報告沒有實際變化的文件。 Git diff不會。 – 2012-07-27 09:48:27
複製時文件權限發生了什麼變化? – pmr 2012-07-27 09:49:20
@JanHudec我在做git身份。我只是開始使用git,所以我直到你的答案才真正瞭解git diff。 – ppp 2012-07-27 09:50:07