簡體   English   中英

git想要添加已經跟蹤的文件

[英]git wants to add already tracked files

我在個人電腦上有一個大約70GB的存儲庫,當我將它復制(不是克隆,只是簡單的復制)到我的mac時,它表明有些文件在跟蹤時沒有跟蹤。

當我添加它們時,它們似乎在repo對象信息中重復,但當然不在工作樹中。 所以我對最后一次提交進行了硬重置,但文件再次顯示為未跟蹤。

我怎么解決這個問題? (知道電腦上的回購工作正常)

不要將存儲庫的工作目錄從計算機復制到計算機。

問題

您的工作目錄已檢出相應行結尾的文件。 您的Windows機器使用回車符和換行符來表示換行符,而Mac則不然。 您應該已將 PC 配置為在存儲庫中進行行結束轉換。 將文件從Windows復制到Mac會將帶有Windows樣式行結尾的文件引入Mac,這些文件不屬於Mac。

Git已經決定你的文件有未分級的更改 [1],因為你的行結束配置指示你的客戶端在存儲庫中保留Unix風格的行結尾,並在檢出文件時轉換為正確的行結束格式。 這意味着當您在PC上檢出文件時,它們會轉換為Windows樣式的行結尾。 但是你的Mac希望不會改變存儲庫的行結尾。

因此,您的存儲庫包含Unix格式的文件,而您的Mac包含Windows格式的文件。 因此,當您運行git status ,Git意識到工作目錄中的文件與存儲庫中的文件不同。 (僅在行結尾不同)並告訴您文件具有未分級的更改。

其他問題

還有其他原因不將存儲庫從一台計算機復制到另一台計算機。 當創建或克隆存儲庫時(通過git initgit clone ),Git會檢測計算機的行為。 有關系統的數據,如文件系統是區分大小寫還是不區分大小寫,以及文件系統是否支持符號鏈接,都存儲在存儲庫的配置中。

如果要將具有工作目錄的存儲庫從Windows計算機復制到Mac,則存儲庫將不再支持符號鏈接。 從Mac到Linux機器,您的存儲庫會變得非常困惑,因為它認為它不區分大小寫。

最后,即使您在同一類型的計算機上復制存儲庫 - 甚至是同一台計算機本身 - 也可能會遇到問題。 Git在索引中緩存一些工作目錄信息。 復制工作目錄應該使該緩存無效, 但某些Git客戶端可能(錯誤地)在復制后服從緩存 ,這會產生錯誤信息。

這是您可能真正想要刪除存儲庫並重新開始的少數幾次之一。 您可以刪除工作目錄中的所有文件清理配置。 但是在這一點上,將這個存儲庫git clone到你的Mac上實際上要容易得多。

由於存儲庫很大,如果您不想花費網絡流量開銷,則只需從復制的現有存儲庫中克隆即可。 (它將忽略錯誤配置的工作目錄文件和錯誤配置。)例如,如果損壞的存儲庫位於badrepo

git clone badrepo goodrepo

[1]:術語:您的文件有未分級的更改 ,您的文件不會被跟蹤 未跟蹤文件是那些尚未存儲在存儲庫中的文件。

建議:壓縮成zip文件后嘗試壓縮

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM