我更改了目录的大小写,Git似乎没有接受它

dan*_*dan 108 git macos

我正在开发一个基于Git版本控制的OS X Lion项目.我有这些小写目录,然后将它们大写(例如emailaddresses => EmailAddresses),但Git似乎没有认识到这一变化.当我运行git ls-files和其他命令时,它仍然认为目录是小写的.

这是无害的,还是我应该采取其他措施让Git接受这​​一变化?

Tar*_*ran 212

您可以告诉git通过运行来考虑案例

git config core.ignorecase false

  • 谢谢.这非常有帮助! (8认同)
  • 由于某种原因它复制了所有文件,现在我既有原始版本又有大写更改的版本...... (5认同)
  • 如果你已经在不使用git mv --force或其他一些CL脚本的情况下更改了文件名,那真的很棒.谢谢! (3认同)
  • 这是上乘的答案,因为我不太喜欢git mv'ing 200个重命名的文件! (3认同)
  • @Salatiel 我猜当你已经在跟踪文件时它会重复它们。 (3认同)
  • 请记住,在不区分大小写的操作系统(Windows)中推送具有相同名称但大小写不同的文件/文件夹时,使用此命令将给出重复的文件/文件夹 (3认同)
  • 这个答案会导致不区分大小写的文件系统出现问题,并且明确不建议这样做:/sf/answers/3665846481/ (3认同)

Pau*_*l R 155

您可能使用不区分大小写(但保留大小写)HFS +.我通常像这样工作:

$ git mv somename tmpname
$ git mv tmpname SomeName
Run Code Online (Sandbox Code Playgroud)

  • 或者在一个命令中执行:git mv --force somename SomeName(来自http://stackoverflow.com/a/16071375/217866) (9认同)
  • 与Github for Windows工具有同样的问题.上述解决方案再次很好地解决了这个问题:在Windows Exploer中重命名为临时文件,然后 - 在提交后 - 使用正确的大小写重命名为最终名称. (3认同)
  • 为了使更改反映在远程存储库中,您还需要“git push origin master”。如果 git 拒绝更新遥控器,您可能需要添加一个虚拟文件(例如“touch stam”)并进行推送。随后删除 stam 并再次推送。 (2认同)
  • @SagunKho:尝试“git mv --force somename SomeName”。 (2认同)
  • 需要注意的一件事是,您需要位于该文件所在的文件夹中才能正常工作。起初这对我来说并不明显,我一直收到 >>> bad source, source=somename, destination=tmpname <<< 因为我试图从存储库的根目录运行命令。 (2认同)

Dav*_*arl 31

如何在Mac上git mv病毒敏感

这种情况正在发生,因为Mac OS X实现了案例保留和不区分大小写的功能,旨在帮助您.

虽然另一个答案中的双重重命名建议可行,但我建议使用'--force'来获得最佳实践结果:

$ git mv --force somename SomeName
Run Code Online (Sandbox Code Playgroud)


注意:如果你在没有强制选项的情况下尝试,git会像你这样:

$ git mv somename SomeName
$ fatal: destination exists, source=somename, destination=SomeName
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,git命令失败,文件系统或git的索引中没有更改文件.


poo*_*raj 18

尝试在.gitconfig文件中将git config选项core.ignorecase更改为false.

  • 或写`git config core.ignorecase false` (3认同)
  • @iforgotmypassword =您应该已经回答了-我实际上会为您投票 (2认同)

gia*_*pnh 7

原因是基于 LINUX 的操作系统或 macOS 忽略文件/文件夹名称的大小写。我们需要通过以下步骤解决这个问题

For Exp, you want to change folder name from Base to base
1. mv Base base2
2. git add . && git commit -m "Fix folder name problem (wip)"
3. mv base2 base
4. git add . && git commit -m "Fixed folder name problem"
Run Code Online (Sandbox Code Playgroud)


Ren*_*abu 6

以下步骤帮助我解决了这个问题:

  1. 将文件夹重命名为temp

    mv Folder temp                  // It will rename your Folder to temp
    
    Run Code Online (Sandbox Code Playgroud)
  2. 阶段和提交:

    git add .
    git commit -m "Temp"
    
    Run Code Online (Sandbox Code Playgroud)
  3. temp文件夹重命名为您的选择:

    mv temp folder        // It will rename temp folder to the name of your choice(folder)
    git add .
    git commit -m "Folder Fixed"
    
    Run Code Online (Sandbox Code Playgroud)

完成 - 您现在可以推送了。

  • 效果很好。非常感谢 (2认同)