Git标记未更改的文件为已更改

7
这是一个基本问题:git似乎把我所有的文件都标记为已更改,即使没有任何更改。即使差异也没有显示任何不同,它仍然要求我新添加/提交所有文件。如何以一种方式说服git,让它相信在那一点上没有更改,同时仍然跟踪从那一点开始的更改?
我有一个git存储库,在两台不同的电脑上进行编辑(两台电脑都是苹果的)。我使用加密的文件系统映像通过USB存储设备传输文件,并使用rsync进行复制。当我将文件传输到笔记本电脑时,所有文件都被标记为已更改。如果我忽略git并继续操作文件,并将其传回,另一台机器将再次正确识别只更改的文件。所以,这样做还算有效,但对于在我的笔记本电脑上工作而无法提交更改直到回到另一台机器时,这真的很不方便,到那时,我必须在单个提交中提交几个更改。
2个回答

7
原来不是行尾的问题。我对这个解决方案有所怀疑,因为我认为git会将每一行都显示为已更改 - 但实际上它没有。但今天我在我的工作机器上检查文件时偶然发现了一个小细节:文件访问权限在传输过程中从644更改为755(或反之亦然)。
解决方案在stackoverflow上的这个问题中可以找到:如何使git忽略模式更改(chmod)?请参考。

谢谢!我以为自己要疯了或者得上老年痴呆症了,因为我记不起来改过哪个文件,但是git却标记了所有的文件都被修改了。哈哈!我从没想到过git会跟踪文件权限! - Kenny83

3
我会检查传输过程中是否更改了行尾字符。虽然这可能很麻烦,但您可以使用core.autocrlf选项来控制它,如此问题所述,以帮助应对这个问题。
我也肯定会参考GitHub关于行尾字符的帮助文档,因为它提供了一些处理这种问题的好建议(假设它确实是您遇到的问题)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接