1

我在 linux 中处理我的项目,并将我的工作推送到我的 git repo。我将项目目录(包括 .git 目录)复制到我的 windows 机器上,以便我可以从那里工作。现在,当我执行时,git status我得到了大量修改过的文件,每个项目文件。所以git认为每个新文件都是修改过的文件,因为我复制粘贴了。有没有办法让 git 检查,查看文件是否相同并将它们从更改的文件列表中删除?

4

1 回答 1

3

将包括工作树的 git 存储库从 Linux 复制到 Windows 或反之亦然是一个坏主意,因为它也会复制配置,而且在其他平台上几乎肯定是错误的。所以简单的解决方案是不要这样做并使用克隆(注意,克隆在 samba 上工作,尽管它在非本地网络上会很慢)。

问题可能是因为.git/config从一个系统复制到另一个系统的 git 配置 (in ) 在那里不合适,或者默认或系统范围的配置使 git 期望工作树看起来与它在另一个系统上所做的不同。我可以想到 3 个特定于系统的设置:

  1. 换行符转换。您的 Windows git 很可能默认转换换行符,因此它希望工作目录包含带有 Windows CR/LF 换行符的文件,但它会看到带有 Unix LF 换行符的文件。有一种新的和旧的设置方法,新的方法不应该这样做。而且这取决于您是否真的要进行转换;我发现我几乎从不这样做。

  2. 可执行权限处理。Windows 上没有可执行位,因此有一些选项可以告诉系统忽略对其所做的更改,但是从 unix 复制的存储库会将其设置错误。

  3. 这同样适用于符号链接处理。

于 2012-07-27T10:04:57.870 回答