簡體   English   中英

Git/Windows - 簽出分支(以及拉取/合並分支)時區分大小寫的問題。 受影響的文件在 Windows 資源管理器中全部為小寫

[英]Git/Windows - Case sensitivity issues when checking out a branch (and pulling/merging a branch). Affected files are all lowercase in Windows Explorer

關於區分大小寫,git 和 Windows 有一個非常奇怪的問題。

我不是 git 的高手,但我也不是初學者。 只想把它扔出去。

我面臨的問題:

  • 克隆一個存儲庫(不要指定分支,只需獲取遠程原始主機上的內容)

  • 檢查現有的開發分支(我們稱之為 DEV)

  • 許多文件現在都是小寫的

    一種。 這些文件的兩個分支都具有相同的大小寫

    b. 受影響的文件似乎是包含兩個分支之間內容差異的文件

    c。並非所有文件都受到影響

附加條款:

  • 使用 Windows 系統(不區分大小寫)

  • git 配置文件定義 ignorecase = true

    一種。 嘗試切換到 false,並沒有消除這個問題

  • 嘗試在每個分支上運行 ls-tree,兩者都顯示文件具有相同的大小寫(不是全部小寫)

  • 切換到 Dev 分支並返回 master 時,受影響的文件名保持小寫

  • 直接克隆 Dev 分支工作正常 不會導致這些小寫文件名

我已經嘗試了很多方法來解決這個問題,盡管目前還沒有解決方案。

有人知道這里發生了什么嗎? 關於這個問題,我沒有找到太多支持。

這個問題看起來是相關的(但沒有答案):

切換 GIT 分支隨機更改文件名大小寫

謝謝

可能有人可以確切地弄清楚發生了什么以及為什么會發生,但是我恐怕大多數回答這個問題的人都會提供一些類似“如果它會受傷,請不要這樣做”的東西。

例如,torek 建議在評論中獲取 Linux 系統。 Torek 是 stackoverflow 上最有經驗的人之一,如果他們沒有給你答案,很可能它不會到來。

如果您不想獲得 Linux 系統,另一種選擇是將所有文件的大小寫更改為相同(例如全部小寫)。

由於這個原因,人們經常建議人們不要在文件名中混合大小寫。 我個人更喜歡全部小寫。

在 Windows 中的文件夾上啟用區分大小寫。 (NTFS 自 2018 年 4 月起具有此功能。)

fsutil file setCaseSensitiveInfo <folder> enable

請參閱https://docs.microsoft.com/en-us/windows/wsl/case-sensitive

在 git 存儲庫中找到 Windows 不區分大小寫的重復目錄路徑

以管理員身份打開Powershell

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

(需要重啟機器)

以管理員身份打開Powershell

cd drive:\your\root\folder

(Get-ChildItem -Recurse -Directory).FullName | ForEach-Object {fsutil.exe file setCaseSensitiveInfo $_ enable}

打開 git Bash

cd /drive/your/root/folder

find * -type d | uniq -di

暫無
暫無

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

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