我正在开发一个在Git版本控制下的OS X Lion上的项目。我有这些小写的目录,然后把它们大写(例如emailaddresses => emailaddresses),但Git似乎没有识别出这个变化。当我运行git ls-files和其他命令时,它仍然认为目录是小写的。
git ls-files
这是无害的吗,或者我应该做一些其他的事情来让Git接受这个更改?
尝试改变git的配置选项核心。在.gitconfig文件中忽略为false。
您可能正在使用不区分大小写(但保留大小写)的HFS+。我通常是这样做的:
$ git mv somename tmpname $ git mv tmpname SomeName
这是因为Mac OS X实现了保留大小写和大小写不敏感的功能,旨在帮助你。
虽然另一个答案中的双重重命名建议也可以,但我建议使用'——force'以获得最佳实践结果:
$ git mv --force somename SomeName
< br >
注意:如果你不使用force选项,git会像这样吐在你身上:
$ git mv somename SomeName $ fatal: destination exists, source=somename, destination=SomeName
在上面的例子中,git命令失败了,文件系统或git的索引中没有任何文件被更改。
你可以告诉git通过运行来考虑这种情况
git config core.ignorecase false
如果你执行git mv AAA aaa或git mv -f AAA aaa,它将不起作用,你将会得到错误fatal: renaming 'AAA' failed: Invalid argument。
git mv AAA aaa
git mv -f AAA aaa
fatal: renaming 'AAA' failed: Invalid argument
因为在不区分大小写的文件系统中,AAA和aaa是一个相同的文件夹/文件,所以将AAA移动到aaa意味着将AAA移动为aaa/AAA。
AAA
aaa
aaa/AAA
所以你应该这样做
git mv AAA aaa.1 git mv aaa.1 aaa
希望对你有所帮助。
以下步骤帮助我解决了这个问题:
temp
mv Folder temp // It will rename your Folder to temp
Stage and commit:
git add . git commit -m "Temp"
Rename temp folder to your choice:
mv temp folder // It will rename temp folder to the name of your choice(folder) git add . git commit -m "Folder Fixed"
Done - You can now push.
您也可以在不使用GIT命令的情况下手动完成此操作。在.git文件夹中,只需删除带有你想要的名称的文件夹,即SomeName。然后将文件夹somename重命名为SomeName。更多细节:如何修复文件夹名称设置为大写和git转换为小写
.git
SomeName
somename
原因是基于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"
这些实际上都没有帮助我,我仍然有git告诉我隐藏我的更改,因为我的情况是,我的本地文件夹是大写的,但远程不是,我的分支是落后的,我不能再拉,因为文件夹结构中的文件大写差异。
我能解决这个问题的唯一方法是删除我的本地分支并签出远程。