Показать только отмеченные коммиты в git log - PullRequest
2 голосов
/ 08 июля 2019

Я ищу способ показать журнал git, упорядоченный по коммитам, показывающий их даты, а также показывающий только коммиты, имеющие теги.

Наш веб-хост имеет автоматизированную систему развертывания, и когда конкретный коммит отправляется в производство, он получает определенный тег на нем. Я устраняю проблему и хочу посмотреть только те коммиты, которые были в производстве.

Мне удалось создать псевдоним git, который я называю nanolog, например:

nanolog = log --date-order --date=format:'%Y-%m-%d %H:%M:%S' --format='%C(yellow)%cd%Creset  %h  \"%s\"  %Cred%cn %Cgreen(%cr)'

, который дает мне журнал, похожий на этот:

2019-06-17 23:39:43  13f7e5f89  "Merge branch 'live-config' into int"  Webhost (3 weeks ago)
2019-06-17 23:24:20  32b6141dc  "Merge branch 'live-config' into int"  User Name (3 weeks ago)

Я посмотрел на документацию для git log и в разделе о --format, который я использовал, чтобы указать, какая информация отображается в моем псевдониме nanolog, я сделал не найти способ отображения тегов. Я просмотрел документацию по симпатичным форматам и также не нашел способа указать информацию тега.

На складе git log вы видите теги рядом с хэшем коммита:

commit d1d59f2fe151d1eb240b453e6efe76e4dfe13a93 (tag: webhost_test_198, tag: webhost_live_114, origin/06-24, 06-24)
Merge: 13f7e5f89 143b58189
Author: Webhost <webhost@webhost.com>
Date:   Fri Jun 21 20:25:24 2019 +0000

    Merged int into master

Это довольно трудоемкий и несколько подверженный ошибкам просмотр списка git log, который включает в себя информацию о тегах, а также все остальные нетегированные коммиты. Как я могу получить краткий журнал, который показывает только коммиты с тегами?

В идеале я хотел бы что-то вроде этого:

2019-06-17 23:39:43  13f7e5f89 (tag: webhost_test_198, tag: webhost_live_114, origin/06-24, 06-24) "Merge branch 'live-config' into int"  Webhost (3 weeks ago)
2019-06-03 23:24:20  32b6141dc (tag: webhost_test_197, tag: webhost_live_113,)  "Merge branch 'live-config' into int"  User Name (5 weeks ago)

1 Ответ

1 голос
/ 08 июля 2019

Давайте начнем с простого вывода --oneline в фиктивном репо и только за последние три коммита

git log --oneline -3

4c37e97 fixed a bug in sub-feature F1
d9c4599 added sub-feature F1
06014cb changed part XYZ

Теперь, если мы добавим художественные оформления (ссылки, указывающие на коммиты, а именно теги и ветви) с флагом --decorate:

git log --oneline --decorate -3

4c37e97 (HEAD -> feature/abc) fixed a bug in sub-feature F1
d9c4599 added sub-feature F1
06014cb (tag: release/1.22) changed part XYZ

И в этот момент вы также можете добавить флаг --simplify-by-decoration, чтобы отфильтровать коммиты, на которые не ссылается ни один тег / ветвь

git log --oneline --decorate --simplify-by-decoration -3

4c37e97 (HEAD -> feature/abc) fixed a bug in sub-feature F1
06014cb (tag: release/1.22) changed part XYZ
eec8aad (master) some older change

Но в вашем случае с определенным форматом у вас есть %d для этого эффекта.

Если мы изменим ваш nanolog, который в моем примере выдает следующее:

git nanolog -3

2019-07-08 19:19:46  4c37e97  "fixed a bug in sub-feature F1"  Romain (69 seconds ago)
2019-07-08 19:19:11  d9c4599  "added sub-feature F1"  Romain (2 minutes ago)
2019-07-08 19:18:26  06014cb  "changed part XYZ"  Romain (2 minutes ago)

в этот

    nanolog2 = log --date-order --date=format:'%Y-%m-%d %H:%M:%S' --format='%C(yellow)%cd%Creset  %h  \"%d %s\"  %Cred%cn %Cgreen(%cr)'

... мы получим

git nanolog2 -3

2019-07-08 19:19:46  4c37e97  " (HEAD -> feature/abc) fixed a bug in sub-feature F1"  Romain (12 minutes ago)
2019-07-08 19:19:11  d9c4599  " added sub-feature F1"  Romain (13 minutes ago)
2019-07-08 19:18:26  06014cb  " (tag: release/1.22) changed part XYZ"  Romain (14 minutes ago)

Наконец, да, вы можете передать это grep "(tag:" или, может быть, просто grep tag, чтобы отфильтровать коммиты только с ветками, но без тегов.

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