我现在遇到了一个关于存储库的问题,尽管我的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假把戏,效果不太好。


当前回答

git config core.fileMode false

解决了我的这个问题

https://git-scm.com/docs/git-config

TL; diana;

core.fileMode

如果为false,则忽略索引和工作树之间的可执行位差异;对FAT等损坏的文件系统很有用。看到git-update-index(1)。

默认为true,除非git-clone(1)或git-init(1)将探测和设置core。在创建存储库时,fileMode为false(如果合适)。

其他回答

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

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

* text=auto

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

我想添加一个关于“为什么”会发生这种情况的更直接的答案,因为关于如何解决它已经有了一个很好的答案。

因此,.gitattributes有一个* text=auto设置,这导致了这个问题。

在我的例子中,GitHub主分支上的文件有\r\n个结尾。我已经拨出了存储库上的设置,以使用\n个结尾签入。但我不知道Git会检查出什么。它应该在我的Linux盒子(\n)上检出本机结尾,但我猜它检出了带有\r\n结尾的文件。Git抱怨是因为它看到了存储库中检出的\r\n个结尾,并警告我它将检入\n个设置。因此文件是“待修改”的。

这是我目前的理解。

我将本地存储库复制到另一个文件夹,出现了一堆修改过的文件。 我的解决方法是:将修改过的文件存储起来,然后删除存储。存储库变得干净了。

我试图做一个交互式的重基,但它声称有一些修改过的文件,所以它不让我现在做。我尝试了所有方法来恢复一个干净的存储库,但都没用。其他答案都没用。但这最终奏效了……

git rm -rf the-folder-with-modified-stuff
git ci -m 'WAT'

繁荣!干净的存储库。问题解决了。然后,当我执行rebase -i时,我不得不放弃最后一次提交,最后一切都重新干净了。奇怪的!

git config core.fileMode false

解决了我的这个问题

https://git-scm.com/docs/git-config

TL; diana;

core.fileMode

如果为false,则忽略索引和工作树之间的可执行位差异;对FAT等损坏的文件系统很有用。看到git-update-index(1)。

默认为true,除非git-clone(1)或git-init(1)将探测和设置core。在创建存储库时,fileMode为false(如果合适)。