我必須在不同目錄中的 repo 中復制由 git lfs 處理的檔案(相同名稱,相同內容),以便我們的 3rd 方軟體正常作業。這是我必須使用的第 3 方軟體的限制。
- ./directory1/large_file.crg
- ./directory2/large_file.crg
git lfs 智能地識別它們是同一個檔案,并且只將其下載到本地存盤庫一次。其他檔案只是得到一個指向真實檔案位置的指標。這會導致第 3 方軟體出現問題,因為它無法讀取指標。
有什么辦法可以強制 Git LFS 復制檔案而不是指向它?或者有人可以指出我記錄這種行為的地方,以便我可以向同事解釋嗎?
uj5u.com熱心網友回復:
TL; 博士
不要在要在 Windows 和 Linux/Mac 上使用的存盤庫中使用符號鏈接。
符號鏈接的問題
根據問題下的評論,結果證明 repo 沒有大檔案的兩個副本,而是一個副本,以及指向它的 Linux 樣式的符號鏈接。
Git 完全支持符號鏈接——你可以添加、修改、簽入、簽出。只要您一直使用 Linux,一切都會正常進行。
但是 Windows 不支持 Linux 風格的符號鏈接,所以你得到的東西是壞的,正如你在問題下的評論中所描述的那樣。
解決方案:擺脫符號鏈接是跨平臺的repos
這似乎不是一個很好的解決方案,但如果您的存盤庫打算在 Windows 和 *nix 作業系統上使用,請避免使用符號鏈接。
你仍然會節省一些空間,至少在 Git 服務器上,在 Git LFS 存盤中也是如此,因為 Git 足夠聰明,可以在存盤庫中有兩個相同的檔案時重用同一個 blob。事實上,它無法做任何其他事情,因為 blob 的 sha1 哈希值用于存盤和檢索 blob!在使用該存盤庫的每個沙箱中,您將只有兩個副本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/380605.html
下一篇:VisualStudio2017/2019/2022gitsync/pull/push/fetch操作卡住,無法停止
