Показать специфику c коммитов в логе git, в контексте других коммитов? - PullRequest
3 голосов
/ 29 апреля 2020

Существуют различные способы «выбора» коммитов с помощью git log. Например:

и многих других.

Однако все они показывают только коммиты, выбранные для командной строки. Я хочу видеть все коммиты в моем диапазоне, но выделите (цветом, маркером или чем-то еще) конкретное подмножество c этих коммитов, например коммиты, которые изменили конкретный файл или без разницы. Поэтому при выполнении:

git log --oneline master..@ -- path/to/frobnitz

вместо просмотра:

12ca6d863 foo
6166da1fd bar
894567343 baz

я бы увидел что-то вроде:

46984ad11 (HEAD -> master) git is fun!
2e11a5382 cool beans
>> 12ca6d863 foo
60069036d whatever
d698663d0 something
>> 6166da1fd bar
3d2c811e3 more cool stuff
>> 894567343 baz
3d2c811e3 cool stuff

Кроме того, идеально решение будет работать в режиме --graph, потому что я также хочу видеть контексты слияния и ветвления выбранных коммитов.

Также отмечу, что git log поддерживает различные сценарии Упрощение истории ios, что в некоторых случаях дает мне почти то, что я хочу, но не легко понять, как, да и не совсем то, что я хочу. У меня уже есть история, которую я хочу увидеть, и у меня уже есть коммиты, которые я хочу выделить.

Некоторые идеи у меня были, но мне не нравится ни одна из них:

  • Script it - запустите два git журнала, а затем используйте выходные данные одного для украшения / манипулирования другим. Недостатком этого является то, что он хрупкий, и он не будет хорошо работать для различных наборов опций, которые я мог бы предоставить целевому журналу, например --graph

  • Для «выбранных» коммитов, присвойте им временные ссылки, например, selectedcommits, а затем используйте --decorate-refs=selectedcommits, чтобы показать соответствующие коммиты. Это кажется грязным.

Ответы [ 3 ]

2 голосов
/ 30 апреля 2020

Просто для удовольствия, в ожидании лучшего ответа.

git log --oneline --decorate=no --graph | less -p $(git log --pretty=%h -- Makefile | tr '\n' '|')

Идея состоит в том, чтобы направить вывод через, например, less для выделения указанных c коммитов.

enter image description here

Проверено в bash на Linux и git - bash на Windows.

Здесь первая попытка для псевдонима:

[alias] hl-graph = !git log --oneline --graph --color | less -R -p $(git log --pretty=%h \"$@\" | tr '\n' '|') && :

Можно выделить коммиты, как обычно:

 git hl-graph --since="1 month ago" -- path/to/frobnitz

Однако формат журнала изменить нельзя.

1 голос
/ 30 апреля 2020

Следуя ответу @sergej (upvote!

Они используются для передачи вывода любой команды журнала в псевдоним. Например:

git log --oneline --graph --color | git hl --since="1 month ago" -- path/to/frobnitz

(или для постраничной версии используйте hlp)

0 голосов
/ 29 апреля 2020

Попробуйте следующую команду git:

git log --name-only --pretty=format:"%h %s" --graph

Эта команда покажет все измененные файлы (--name-only), git commit-ha sh (%h), topi c из команды (комментарий от git commit command -> %s), а также ветви, нарисованные разными цветными линиями.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...