簡體   English   中英

在 git 中使用 Windows 中具有相同名稱但大小寫不同的目錄

[英]Working in git with directories with the same name but different case in Windows

我想從 Windows 中的 git repo 中提取,它有兩個目錄,名為Foofoo 兩個文件夾都有不同的內容。

由於 Windows 不區分大小寫並且不允許具有相同名稱但不同大小寫的文件夾,我如何推送到 git repo?

簡短的回答:你不能輕易做到這一點。

默認情況下,這是 Windows 子系統的限制。 除非您使用較低級別的系統調用,否則不同大小寫的 Windows 不會有所不同; 所以即使 Git 能夠跟蹤差異,它也無法將這些差異傳達給文件系統。

如通過評論中指出phuclv可以重新配置Windows內核區分大小寫。 在 Windows 10 中,這甚至適用於單個文件夾,因此您可以使用它在需要的地方添加兼容性。 但是,每個文件夾的區分大小寫不是繼承的,因此您需要為 Git 創建的文件夾手動更改此設置,這可能會有點麻煩,這主要是一種解決方法。

相反,您可以使整個文件系統區分大小寫,但這可能會產生其他影響,因此如果您想這樣做,請務必小心。

另請注意,即使在較低級別支持區分大小寫的內容,大多數 Windows 應用程序,包括內置的 Windows 工具,也可能無法使用它。 因此,這只允許您使用某些工具處理這些文件。 例如,我的猜測是大多數基於 GUI 的 Git 工具在這里根本不起作用。

如果您不想進行這些修改,那么您可能還可以創建部分提交,您只需將文件添加到正確的文件夾中(您需要在中間重命名它以獲得不同的大小寫)。 但這將是非常不切實際的。

在我看來,最好的解決方案是簡單地避免在名稱沖突的文件夾上使用多個文件。 即使在區分大小寫的系統上,這只會使事情變得更加混亂。 通過完全避免這種情況,您還可以讓所有其他開發人員更輕松地與項目進行交互。

作為 poke 答案的后續操作,您需要將這些目錄拆分為不同的名稱,或者將它們正確合並為一個具有相同名稱的名稱,這當然取決於您的需要。 除了這種情況外,它們不能具有相同的名稱並使其在 Windows 中工作(無論如何以清晰明了的方式)。

我不小心在同一條船上結束了。 我不確定如何,因為我一直在使用 Windows,但在某些時候我更改了 repo 中目錄的大小寫,並且一些文件最終保留在具有“舊”名稱的目錄中,而一些文件與“新”名稱。 在我的 Windows 機器上,它們都使用了新名稱,但是當我將 repo 拉入 Linux 時我發現了這個問題,並在我查看我的 Assembla repo 時確認了拆分。

為了解決這個問題,我首先將它克隆到我的 Windows 機器上的一個單獨位置。 這樣做后,所有文件又都在一個目錄中,顯然這兩個目錄剛剛合並。 然后我將該問題目錄重命名為“temp”(使用 TortoiseGit“重命名”操作)。 然后,我將 repo 克隆到另一個位置。 那時,這兩個目錄實際上在 Windows 中是分開的。 我有一個“臨時”,加上帶有“舊”名稱的目錄。

由於我確實希望將它們放在一個目錄中(在所有平台上!),我將舊命名目錄中的文件移到“temp”中,然后刪除了“old”目錄。 接下來,我將 temp(再次使用 TortoiseGit“重命名”操作)重命名為我想要的名稱,提交並再次推送。 最后,我將更改拉入我的原始存儲庫,即我的 linux 存儲庫,並查看了 Assembla。 一切終於達成一致,所以我刪除了那些臨時克隆並稱它為一天。

暫無
暫無

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

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