移动存储库后,git diff报告模式发生了变化

时间:2012-01-12 22:15:12

标签: git

我通过复制到外部硬盘驱动器将一堆我的git存储库移动到另一个操作系统。现在,当我git diff时,它报告所有文件模式已更改。

diff --git a/.gitignore b/.gitignore
old mode 100644
new mode 100755
diff --git a/.npmignore b/.npmignore
old mode 100644
new mode 100755
diff --git a/.travis.yml b/.travis.yml
old mode 100644
new mode 100755
diff --git a/LICENSE b/LICENSE
old mode 100644
new mode 100755
diff --git a/README.md b/README.md
old mode 100644
new mode 100755

我对文件权限知之甚少,我该怎么办呢?

提交模式更改?为所有非可执行文件更改模式? git reset?

2 个答案:

答案 0 :(得分:39)

您可以应用此设置

git config core.filemode false

导致git忽略文件模式的差异。

此解决方案见于@ kan对another question

的回答

答案 1 :(得分:11)

可能您的外部硬盘驱动器上有一个不同于原始文件权限的文件系统。我只是在提交之前用手纠正它们。

例如,常用于USB拇指驱动器的FAT32不支持执行权限。当您将文件从FAT32文件系统复制到普通的类Unix文件系统时,它通常会为所有文件设置执行权限,因为这比为所有文件关闭文件的损害要小。

如果要保留此类信息,请不要将文件直接复制到驱动器;相反,制作一个tar文件(可选择压缩),然后在另一端解压缩。 tar格式确实跟踪Unix权限位。

请注意,git本身不会跟踪可执行文件与非可执行文件。如果模式更改是唯一的区别,并且您不想重新复制所有内容,则可以将git diff的输出转换为脚本,对所有受影响的文件执行chmod -x