git diff - вывод, показывающий изменения "неправильно" - PullRequest
0 голосов
/ 08 июня 2018

Допустим, я получил вывод diff при сравнении двух файлов:

example
example
example
example
example
example
example
example

и

example
example#
example
example
example
example#
example#
example

Таким образом, по сути, единственное отличие, которое я сделал в исходном файле, заключалось в добавлении # -отметки к некоторым из линий.Для этих двух файлов diff будет иметь следующий вид:

...
example
+example#
example
example
-example
-example
-example
+example#
+example#
example
...

Таким образом, команда diff в основном считает, что первый знак #, который я поставил во второй строке, является совершенно новой строкой в ​​файле.Есть ли способ заставить diff выводить такие изменения:

...
example
-example
+example#
example
example
-example
-example
+example#
+example#
example
...

Это облегчит мою жизнь.Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

В случае, если вы показываете все строки с одинаковым содержимым, алгоритм git не сможет различить одну строку за другой.Если линии были другими, он покажет вам, какая строка изменилась (с добавлением или удалением).Затем, чтобы пойти дальше, вы можете использовать git diff --word-diff (https://git -scm.com / docs / git-diff # git-diff --- word-diffltmodegt ), чтобы показать различия на символ, не в строке.

0 голосов
/ 08 июня 2018

Я имею в виду, вы можете попробовать указать разные алгоритмы и посмотреть, даст ли один из них в конкретном случае результат, который вам больше нравится.См. git diff документы (https://git -scm.com / docs / git-diff );есть опция --algorithm, где вы можете выбрать patience, minimal, histogram или myers.

Кто-нибудь из них будет делать то, что вы хотите в этом случае?Согласно моим тестам, нет;но потом, я предполагаю, что это может быть преувеличенным примером, поэтому, возможно, один из них поможет в вашем реальном сценарии.Я не знаю хорошего «практического» объяснения того, когда каждый из них лучше или как отличается их результат;но теперь, когда у вас есть имена алгоритмов, я полагаю, вы можете решить, стоит ли пытаться исследовать все это.

Я бы сказал, что генерация различий - это нечто большее, чем кажется очевидным.Часто есть несколько патчей, которые доставят вас из точки А в точку Б, и это может быть открыто для интерпретации, которая «лучше».В некоторых случаях специальные инструменты сравнения могут использовать знание структуры языка, чтобы быть немного умнее;но то, что вы показываете, представляет собой крайне повторяющийся файл, мало указывающий на структуру, поэтому я даже не думаю, что такое мышление здесь обязательно поможет.

...