【问题标题】:Git case sensitive Windows 7Git 区分大小写 Windows 7
【发布时间】:2015-05-20 20:19:31
【问题描述】:

我正在学习 git,所以如果之前已经回答过,请原谅我。我在工作目录中添加了一个文件README.txtgit status 告诉我这是唯一未跟踪的文件。然后我跑了git add readme.txt。运行git status 现在再次告诉我README.txt 是唯一未跟踪的文件。但是,如果我随后运行git add README.txt,它现在会显示为一个新文件。这是否意味着 git 正在添加不存在的文件 readme.txt 的快照?我不明白,因为我认为 git 不区分大小写。

【问题讨论】:

    标签: git staging working-directory


    【解决方案1】:

    我认为 git 不区分大小写。

    不是真的。有一个配置设置 core.ignorecase 在 Windows 中通常设置为 true;文档说

    如果为 true,此选项将启用各种变通方法以使 Git 更好地工作 在不区分大小写的文件系统上

    但这与说 Git 不区分大小写还有很长的路要走。我复制了你所做的,我认为你发现了一个错误。

    $ git checkout -b test 
    Switched to a new branch 'test'
    
    $ echo hello > README.txt
    
    $ git status 
    On branch test 
    Untracked files:   (use "git add <file>..." to include in what will be committed)
    
            README.txt
    
    nothing added to commit but untracked files present (use "git add" to track)
    
    $ git add readme.txt
    
    $ git status 
    On branch test 
    Untracked files:   (use "git add <file>..." to include in what will be committed)
    
            README.txt
    
    nothing added to commit but untracked files present (use "git add" to track)
    
    $ git diff --cached
    
    $
    

    应该发生两件事之一:当我(和你)添加它时,Git 应该抱怨 readme.txt 不存在,或者它应该将 README.txt 的内容添加到缓存中。它没有做任何事情:git add 没有错误,git diff --cached 没有列出任何结果。

    所以我的建议是将 Git 命令视为区分大小写,即使 core.ignorecase 设置为 true。

    【讨论】:

      【解决方案2】:

      您有 NTFS,它不区分大小写。因此,如果 git 询问“README.txt”是否仍然存在,即使您现在有“readme.txt”,它也会被告知“是”。

      我建议告诉 git 完全忘记“README.txt”

      git rm --cached README.txt
      

      然后再次添加 readme.txt。

      【讨论】:

      • 不确定我是否关注。我知道 Windows ntfs 不区分大小写。您是说我需要使用区分大小写的方式将命令输入到 git 中吗?如果我告诉 git 忘记“README.txt”,然后使用git add readme.txt,我会不会遇到工作目录中的实际文件名是“README.txt”但 git 认为它是“readme.txt”的情况.实际文件名是“README.txt”,但在 git 中输入为“readme.txt”。
      • 然后将指令颠倒过来,这样就忘记了“readme.txt”。这也发生在具有 HFS 的 OS X 上。如果您希望 git 发挥最大作用,请使用 Linux(或好的 IDE)。
      • 我不知道您是否可以将 git 配置为不区分大小写:stackoverflow.com/questions/52950/…
      猜你喜欢
      • 2012-02-12
      • 2016-11-24
      • 2023-03-25
      • 2016-03-04
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 2016-05-15
      • 2017-02-04
      相关资源
      最近更新 更多