Используя gitk, могу ли я увидеть разницу между двумя коммитами?

Я пытался:

git diff sha1 sha2

Но результат не самый лучший, можно ли увидеть разницу между двумя фиксациями с помощью gitk?


person Blankman    schedule 05.12.2012    source источник


Ответы (4)


По крайней мере, в окнах это вполне возможно:

введите здесь описание изображения

person Mr_and_Mrs_D    schedule 09.07.2013
comment
У меня тоже работало с ubuntu. Это очень хорошее решение, я не знал об этом до сих пор. Теперь буду пользоваться этим, спасибо! - person LPeteR90; 30.09.2015
comment
как выбрать несколько коммитов? Я пробовал щелкать CTRL - person brettmichaelgreen; 01.11.2016
comment
@greenbrettmichael: я не вижу способа сделать это в gitk - person Mr_and_Mrs_D; 01.11.2016
comment
Вам не нужно выбирать несколько коммитов. Просто щелкните один, чтобы выбрать его, затем щелкните правой кнопкой мыши другой коммит, и вы увидите всплывающее меню, как показано выше. - person bvanlew; 25.01.2017
comment
Обратите внимание, что щелчок правой кнопкой мыши должен быть на комментарии коммита, а не на имени ветки/тега. Щелкните правой кнопкой мыши имя ветки/тега, чтобы открыть другое меню. - person Terry Brown; 17.08.2018
comment
опция появляется, но отключена для меня :( - person Nikhil VJ; 18.06.2020

Не уверен, действительно ли вам нужен diff или вам нужно обычное представление gitk, но только для коммитов, ведущих от sha1 к sha2

В последнем случае вы можете указать все обычные параметры ревизии: https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html

Таким образом, вы можете делать такие вещи, как

gitk sha1..sha2

или если мастер был объединен с веткой sha2, и вы не хотите видеть коммиты, исходящие от мастера и sha1, это первый коммит, ответвленный от master использования

gitk master..sha2
person Jens Schauder    schedule 07.11.2013
comment
То же самое работает для тегов. Мы помечаем все выпуски, и таким образом я могу легко увидеть все сообщения коммитов и связанные с ними различия между двумя выпущенными версиями проекта. Если вы знаете какие-то другие изящные способы добиться этого, пожалуйста, дайте мне знать =) - person errant.info; 27.10.2016

К сожалению, gitk не поддерживает вывод diff таким образом. :-( Однако вы можете использовать git difftool. Он поставляется с поддержкой ряда встроенных инструментов. Например, вы можете сделать git difftool -t kdiff3 sha1 sha2. Он показывает различия файлов по одному. В списке git говорилось о поддержке большего, чем просто один файл за раз с помощью инструмента сравнения, но я не уверен, где это закончилось.Я еще не видел патча, реализующего это.

person John Szakmeister    schedule 05.12.2012
comment
Означает ли это, что gitk не может использовать внешний инструмент сравнения? Кстати, теперь вы можете использовать git difftool -d sha1 sha2 для просмотра различий в каталогах. - person shengy; 22.12.2012
comment
Нет, я так не думаю. :-( - person John Szakmeister; 22.12.2012
comment
Я обнаружил, что gitk теперь поддерживает external diff, но он может использовать difftool только для сравнения одного файла за раз. И я уверен, что git теперь поддерживает сравнение каталогов с помощью команды git difftool -d sha1 sha2. Моя версия git - 1.8.0, и я считаю, что эта функция была реализована в версии 1.7.11 или некоторых других более ранних версиях. - person shengy; 22.12.2012

Нет, но вы можете сделать это с помощью meld:

git checkout sha1
git reset sha2
git diftool --tool=meld

Хитрость заключается в том, что, проверяя sha1 и затем сбрасывая его на sha2, вы делаете все различия между ними кажущимися незафиксированными изменениями. Затем meld может использовать свою способность просматривать незафиксированные изменения, чтобы одновременно сравнивать все задействованные файлы.

person Benubird    schedule 20.02.2015
comment
Я считаю, что это ложь. проверить ответ @Mr_and_Mrs_D - person FedericoCapaldo; 11.08.2017