Мой редактор меняет окончания строк в моих исходных файлах. Когда я это делаю git diff
, я вижу одну и ту же линию дважды - один раз с -
и один раз с +
- без видимой разницы.
Как мне git diff
показать, чем на самом деле было это изменение?
Ответы:
Во-первых, убедитесь, что вы используете цветной вывод (например, с помощью git diff --color
) и что вы включили выделение пробелов с помощью (например)
git config color.diff.whitespace "red reverse"
Однако это может работать не во всех случаях, так как git
не выделяет конечные пробелы для удаленных строк. Чтобы увидеть удаленные пробелы, просто используйте
git diff -R
чтобы поставить пробел на «добавленной» стороне сравнения, где он выделяется.
Для получения дополнительной информации см. Ответы на этот вопрос SO .
000000f0 2d 2d 7d 0a 2b 2b 7d 0a |--}.++}.|
7d - это фигурная скобка '}'.
Вы можете увидеть разницу в конце строки с помощью следующей команды.
git diff | cat -v
Затем "^ M" печатается для окончания CRLF (DOS), ничего для окончания LF (Unix).
По-видимому, git diff поступает правильно, печатая символы CR и LF для окончания CRLF. Но поскольку CR используется консолью, мы не можем его увидеть. Используя cat -v, мы можем сделать его видимым.
git diff > somediff && vi somediff
vim также показывает CRLF как ^ M. но cat -v
это аккуратно.
cat
котором я не знал. :-)
Один из способов увидеть изменения в пробелах - это посимвольно "word diff" с
git diff --color --word-diff-regex=.
Это выделяет все изменения пробелов повсюду в строках . Удалены пробельные заворачивают в [-
и -]
и добавил пробелы в {+
и +}
.
В качестве альтернативы, как предлагает Алекс
git diff --color --ws-error-highlight=new,old
выделяет все изменения пробелов на концах строк .
git diff --ws-error-highlight=new,old
выделяет пробелы в измененных строках.
Графический инструмент сравнения различий лучше покажет вам изменение - попробуйте git difftool
.
Используйте сочетание и установите в настройках отображение пробелов. (Правка -> Настройки -> Показать пробелы.)
Другие графические инструменты, вероятно, имеют аналогичные параметры - ответ + комментарий @ Cotton расскажет вам, как это сделать с помощью vimdiff.
git difftool --tool=meld doesn't
даже запускать мельд. Я не знаю, происходит ли это из-за того, что выполняется перебазирование или нет.
git config diff.wsErrorHighlight all