Подтвердить что ты не робот

Git режим изменения отчета diff после перемещения репозитория

Я переместил кучу своих репозиториев 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?

4b9b3361

Ответ 1

Возможно, на вашем внешнем жестком диске была другая файловая система, которая не соответствовала исходным разрешениям на файлы. Я просто исправлю их вручную, прежде чем совершить.

Например, FAT32, который обычно используется на флэш-накопителях USB, не поддерживает разрешения на выполнение. Когда вы копируете файл из файловой системы FAT32 в обычную Unix-подобную файловую систему, она обычно устанавливает разрешение на выполнение для всех файлов, поскольку это менее вредно, чем отключение для всех файлов.

Если вы хотите сохранить такую ​​информацию, не копируйте файлы непосредственно на диск; вместо этого сделайте tar файл (возможно сжатый), а затем распакуйте его на другом конце. Формат tar сохраняет информацию о битах разрешения Unix.

Обратите внимание, что git сам не отслеживает больше, чем исполняемый или невыполняемый. Если изменения режима являются единственной разницей, и вы не хотите повторно копировать все, вы можете отключить вывод git diff в script, а chmod -x для всех затронутых файлов.

Ответ 2

Вы можете применить эту настройку

git config core.filemode false

вызывает git игнорировать различия в файловом режиме.

Это решение было найдено в @kan ответе на еще один вопрос