Почему VSCode вставляет возврат каретки, отмеченный ^M в gitt diff?

#git #visual-studio-code #newline #windows-subsystem-for-linux #lf

#git #visual-studio-code #новая строка #windows-subsystem-for-linux #lf

Вопрос:

Я использую Ubuntu на WSL2 и VSCode поверх этого. Хотя у меня есть настройка «LF» в VSCode, всякий раз, когда я сохраняю файл, VSCode настаивает на вставке возврата каретки, который помечается как ^M with git diff . Проверьте это:

 diff --git a/network/outputs.tf b/network/outputs.tf
index e13366b..f7cc29c 100644
--- a/network/outputs.tf
    b/network/outputs.tf
@@ -1,4  1,4 @@
-output "vpc_id" {
-    description = "The ID of the Main VPC"
-    value       = aws_vpc.main.id
 output "vpc_id" {^M
     description = "The ID of the Main VPC"^M
     value       = aws_vpc.main.id^M
 }
  

У меня нет проблем с этим в VIM.

Комментарии:

1. Вы установили VSCode внутри WSL или в Windows?

2. @Philippe Честно говоря, я точно не помню. Каков был бы наилучший подход? Я готов удалить и переустановить, чтобы положить этому конец.

3. Я склонен устанавливать на Windows. В любом случае, на стороне git запустите git config --list и убедитесь core.autocrlf=false

4. @Philippe Спасибо за вашу помощь, я применил эту конфигурацию к глобальным настройкам, но, к сожалению, этого было недостаточно для решения проблемы, он по-прежнему вставляет возврат каретки.

5. Можете ли вы сделать dos2unix network/outputs.tf , затем использовать VSCode для редактирования и сохранения, а затем git diff повторить?

Ответ №1:

Если git config --global core.autocrlf=false этого недостаточно, проверьте, существует ли .gitattributes правило (обычно core.eol ), которое может повлиять на то, как Git фиксирует файл:

 git check-attr --all -- network/outputs.tf
  

Комментарии:

1. Спасибо. Я сделал это и все еще сохранялся. dox2unix Выполняет работу, но ищет что-то, что делает это автоматически.

2. @adriaanbd если это не исчезнет, в ваших интересах было бы сделать dos2unix все файлы, добавить, зафиксировать, а затем снова выполнить проверку, чтобы убедиться, что все остается как есть.