【问题标题】:How to make git ignore changes in case?如何让 git 忽略更改以防万一?
【发布时间】:2010-09-08 08:27:33
【问题描述】:

我不太确定这里发生了什么,但有时我的存储库中的特定文件会更改其名称的大小写。例如:

之前:File.h

之后:file.h

我真的不在乎为什么会发生这种情况,但这会导致 git 认为它是一个新文件,然后我必须去改回文件名。你能让 git 忽略大小写变化吗?

[编辑] 我怀疑是 Visual Studio 对那个特定文件做了一些奇怪的事情,因为它似乎最常发生在我打开并在更改后保存它时。但是我没有办法修复 VS 中的错误,但我希望 git 应该更有能力。

【问题讨论】:

  • 回复:Visual Studio 以全小写形式保存文件 您使用的是哪个版本的 Visual Studio?最后我检查了这在 2008 版本中似乎更好。在 2005 年,当通过调试器而不是解决方案资源管理器打开文件时,似乎会出现该错误。
  • 实际上是的,这是 2005 年。不过暂时没有升级的机会。

标签: windows git


【解决方案1】:

从 1.5.6 版开始,.git/config[core] 部分中提供了一个 ignorecase 选项

例如添加ignorecase = true

要为一个 repo 更改它,从该文件夹运行:

git config core.ignorecase true

全局更改:

git config --global core.ignorecase true

【讨论】:

  • git config core.ignorecase true 或 git config --global core.ignorecase true 全局应用。
  • @graywh:它记录在 git-config 下的 core.ignorecase (kernel.org/pub/software/scm/git/docs/git-config.html)
  • 谢谢,我终于找到了为什么 git 没有考虑到我的案例更改。 ignorecase = false 成功了,默认为 true -_-
  • Git Documentation 说:core.ignoreCase 内部变量,它支持各种变通方法,以使 Git 在不区分大小写的文件系统(如 APFS、HFS+、FAT、NTFS 等)上更好地工作。例如,如果目录列表在 Git 期望“Makefile”时找到“makefile”,Git 将假定它确实是同一个文件,并继续将其记住为“Makefile”。默认值为 false,但 git-clonegit-init 将在创建 repo 时探测并设置 core.ignoreCase 为 true。
  • 请注意,core.ignorecase 可能并不适用于所有 git 命令。我已经看到 git showgit ls-files 因大小写而失败,即使 core.ignorecase 设置为 true
【解决方案2】:

在 Windows 的 git 版本 1.6.1.9 中,我发现配置中的“ignorecase=true”已默认设置。

【讨论】:

  • 是的,当您使用 Java 文件时,您希望将此设置设置为 false,否则在进行此类重构时您可能会遇到麻烦(HTMLParser 类变为 HtmlParser 或相反)。跨度>
  • git 版本 2.10.1.windows.1 相同
  • 我知道这是旧的,但在 Windows 上将 ignorecase 设置为 false 是没有意义的,因为 Windows 是不区分大小写的操作系统。无论您使用的是 Java 还是(喘气!)C# 或其他任何东西,这都适用。
  • 一点也不荒谬,因为我们是需要以某种方式命名文件的程序员。例如对于 C#/Unity,找到文件中包含的类很重要。在一台机器上重命名该文件并将其签入会以不透明的方式破坏其他机器上的构建。我正在将 ignoreCase=false 添加到强制性同事 git 设置中!
【解决方案3】:

问题中描述的情况现在在 Mac OS X 上再次出现,git 版本 >= 1.7.4(我认为)。解决方法是设置您的 ignorecase=false 并手动将小写文件(git 更改为这种方式,而不是 Visual Studio)重命名回它们的 UsualCase(即'mv myname MyName')。

更多信息here.

【讨论】:

    【解决方案4】:

    您可以使用以下命令强制 git 以仅区分大小写的方式重命名文件:

    git mv --cached name.txt NAME.TXT
    

    请注意,这不会更改您在 Windows 分区上签出副本中文件的大小写,但 git 会记录大小写更改,您可以提交该更改。以后结帐时将使用新的外壳。

    【讨论】:

    【解决方案5】:

    要强制git识别文件大小写的变化,可以运行这个命令。

    1. 随意更改文件大小写
    2. git mv -f mynewapp.sln MyNewApp.sln

    以前的命令现在似乎已被弃用。

    【讨论】:

      【解决方案6】:
      1. 从控制台:git config core.ignorecase true
      2. 更改文件名大小写
      3. 提交
      4. 从控制台:git config core.ignorecase false

      第 4 步解决了使用不同大小写检查分支的问题。

      【讨论】:

        【解决方案7】:

        git mv FileName fileNameTemp

        然后

        git mv fileNameTemp fileName

        无需提交即可解决您的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-14
          • 2010-12-07
          • 2011-03-18
          • 2014-11-12
          • 1970-01-01
          • 2023-03-30
          • 2016-03-24
          • 1970-01-01
          相关资源
          最近更新 更多