我在linux上处理我的项目,并将我的工作推送到我的git仓库。我将项目目录(包括.git目录)复制到我的Windows机器上,这样我就可以在那里工作了。现在当我执行git status
时,我得到了大量修改过的文件,每个项目文件。所以git认为每个新文件都是一个更改过的文件,因为我复制粘贴它。有没有办法进行git检查,看到文件是否相同,并从更改的文件列表中删除它们?
答案 0 :(得分:3)
将包括工作树的git存储库从Linux复制到Windows或者反之亦然是一个坏主意,因为它也会复制配置,而在其他平台上几乎肯定是错误的。因此,简单的解决方案是只是不要这样做并使用克隆(注意,该克隆适用于samba,尽管它会比非本地网络慢)。
问题可能是因为git配置(在.git/config
中)从一个系统复制到另一个系统是不合适的,或者默认或系统范围的配置使得git期望工作树看起来与它在其他系统。我可以想到3个系统特定的设置:
换行转换。很可能你的Windows git默认转换换行符,所以它希望工作目录包含带有Windows CR / LF换行符的文件,但是它会看到那些带有Unix LF换行符的文件。有一种旧的和新的方式来设置它,新的方法不应该这样做。而且取决于你是否真的想要进行转换;我发现我几乎从不这样做。
可执行权限处理。 Windows上没有可执行位,因此有一些选项可以告诉系统忽略对它的更改,但是从unix复制的存储库会将其设置错误。
这同样适用于符号链接处理。