Как я могу обвинить, не видя слияния - PullRequest
4 голосов
/ 13 марта 2011

Если у меня есть файл, история которого выглядит так:

----A----B
     \    \
      C----D----E

и я обвиняю E, тогда я хотел бы посмотреть, что изменилось в ревизиях B & C, но мне на самом деле наплевать на D, так как это было слияние.

Есть ли способ, которым я могу это сделать? Я думаю, я ищу какую-то опцию --no-merges, чтобы свалить вину, но я не вижу ее в руководстве .

Ответы [ 2 ]

4 голосов
/ 13 марта 2011

На самом деле, вы делаете заботу о D. Рассмотрите этот случай:

in commit B:
2) banana
3) coconut
4) domino     // conflicts with C

in commit C:
2) banana
3) coconut
4) elephant   // conflicts with B

В коммите D мы разрешаем конфликт:

in commit D:
2) banana
3) coconut
4) domino-elephant

Обратите внимание, чтов D появляется строка, которая не появляется ни в B, ни в C. Если вы игнорируете слияния, вы никогда этого не увидите и никогда не сможете определить, откуда взялась строка 4, что плохо.

0 голосов
/ 23 мая 2019

Альтернативой является использование git log -L start,end:filename, которое показывает (по умолчанию, полную) историю строки или строк, пронумерованных между start и end в filename. Вы также можете использовать git log -L /regex/,/regexend/:filename для идентификации строк с помощью регулярных выражений, а не по номерам строк. По своей природе вы, вероятно, получите результаты, отличные от git blame во многих случаях, но мне удалось найти «реальное» (т.е. не слияние) изменение более удобно, чем с git blame.

...