我现在遇到了一个关于存储库的问题,尽管我的Git-fu通常很好,但我似乎无法解决这个问题。

当我克隆这个存储库,然后cd到存储库,git状态显示几个文件被更改。注意:我没有在任何编辑器或其他工具中打开存储库。

我试着遵循这个指南:http://help.github.com/dealing-with-lineendings/,但这对我的问题一点帮助都没有。

我试过git checkout。很多次,但似乎什么也没做。

我使用的是Mac,存储库本身没有子模块。

Mac上的文件系统是“Journaled HFS+”文件系统,不区分大小写。这些文件只有一行,每个文件大约79 KB(是的,您没有听错),因此查看git diff并没有特别有用。我听说过git的全局核心配置。trustctime false,这可能有帮助,当我回到存储库的计算机上时,我会尝试。

我用事实改变了文件系统的细节!我尝试了git配置——全局核心。Trustctime假把戏,效果不太好。


当前回答

在克隆了一个存储库之后,我在Mac上也遇到了同样的问题。它假定所有文件都已更改。

运行git config——global core后。输入时,它仍然将所有文件标记为已更改。在寻找修复后,我在主目录中遇到了.gitattributes文件,其中包含以下内容。

* text=auto

我把它注释掉了,从此以后任何其他克隆的存储库都可以正常工作。

其他回答

我发现Git将我的文件(本例中为.psd)视为文本。在.git属性中将其设置为二进制类型就解决了这个问题。

*.psd binary

在克隆了一个存储库之后,我在Mac上也遇到了同样的问题。它假定所有文件都已更改。

运行git config——global core后。输入时,它仍然将所有文件标记为已更改。在寻找修复后,我在主目录中遇到了.gitattributes文件,其中包含以下内容。

* text=auto

我把它注释掉了,从此以后任何其他克隆的存储库都可以正常工作。

请执行以下命令。这也许能解决问题。

# Remove everything from the index.
git rm --cached -r .

# Write both the index and working directory from git's database.
git reset --hard

我在MacOS上遇到了相关问题。

也就是说,有些人可能没有意识到,虽然MacOS的文件系统看起来是区分大小写的,但事实并非如此。它将存储混合的案例文件名,但是,例如,考虑Foo.py和Foo.py是同一个文件。

A colleague had created just such a scenario by making a foo.py from a Foo.py as part of a development scaffolding. (I.e., not only enforcing PEP8 module file naming conventions, but refactoring the contents significantly from the original such that we wanted to do that kind of work in parallel). When I pulled those changes, MacOS overwrote all the modifications from foo.py into Foo.py, which caused git to think I had made local changes, when I hadn't. When doing a fresh clone, git immediately claimed that Foo.py had significant changes even though it was a fresh clone.

解决方案是将foo.py重命名为一个完全不同的文件名,并且不与原始文件名冲突。在做出更改后,这个问题随着存储库的新克隆而消失了。

(有一个系统配置标志可以在MacOS中打开区分大小写的行为,但建议将其保留在默认设置中,因为切换该行为可能会破坏期望区分大小写的行为。)

对我来说,问题是在我的MacBook上,我的Mac没有按外壳跟踪。我创建了一个APFS区分大小写的“工作区”分区。在那之后,我不再得到状态错误。