Git РЕПО дает противоречивую информацию из WSL, чем из стандартных окон - PullRequest
0 голосов
/ 23 декабря 2018

Когда я запускаю git status в репозитории git через WSL (Подсистема Windows для Linux), который находится в каталоге Windows (/mnt/c/Users/....), я получаю, что каждый файл в каталоге был изменен.Каждая модификация просто удаляет и перезаписывает оригинальный файл.См. Ниже: enter image description here

Ниже git diff на одном из файлов git diff on specific file

Теперь, если я запускаю git status в том же хранилище на стороне Windows (через powershell) я ничего не получаю:

enter image description here

Есть какая-то конкретная причина этого?Я знаю, что ^M связан с различными окончаниями строк, которые используют Linux и Microsoft, но этот git не согласен с тем, были ли внесены изменения или нет, мне кажется странным.

Примечание: яработал над репозиторием на стороне WSL через отдельный клон репозитория (следовательно, почему сторона Windows отстает от 15 коммитов).Однако в хранилище Windows не было никаких изменений.Не уверен, что это что-то изменит, но я бы подумал, что упомяну это.

1 Ответ

0 голосов
/ 23 декабря 2018

Две установки git (собственные окна и WSL) используют разные настройки для конфигурации core.autocrlf, потому что эти две установки не используют один и тот же глобальный файл конфигурации.

Проще говоря, собственный клиент Windows преобразует LF в CRLF при извлечении, и, следовательно, наличие CRLF "не рассматривается" как изменение git status.Наоборот, клиент WSL ожидает окончания строки LF в стиле UNIX, поэтому git status видит каждый файл как измененный, чтобы изменить LF на CRLF.

Вместо того, чтобы полагаться на глобальные установки core.autocrlfВы должны установить его локально в репозитории для любых общих репозиториев.Если к одному и тому же репозиторию обращаются как из Linux / WSL, так и из собственной Windows, вы, вероятно, захотите установить этот параметр на false, чтобы git вообще не изменял окончания строк.Просто знайте, что если вы установите значение false, вам нужно убедиться, что ваши редакторы могут обрабатывать окончания строк как есть (в общем, большинство редакторов программистов, которые я использовал, поддерживают UNIX LF, даже в Windows).

core.autocrlf задокументировано здесь для получения дополнительной информации:

https://git -scm.com / book / en / v2 / Customizing-Git-Git-Configuration

...