Как я могу показать название веток в `git log`?

216

Как я могу показать название веток в выводе git log?

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

vdboor
источник
1
Удобно, что отображение имен связанных заголовков или тегов, по-видимому, уже сделано по умолчанию после недавнего gitобновления.
underscore_d

Ответы:

321

Попробуйте вариант украсить.

git log --graph --all --decorate

Он комментирует коммиты, на которые указывают теги или ветви.

CB Bailey
источник
42
С помощью --prettyвы можете использовать, %dгде вы хотите «украшения».
CB Bailey
4
@noli: Что ты ожидаешь от этого? Не все коммиты являются советами веток.
CB Bailey
9
@noli git сохраняет только название ветви при самой последней фиксации ветви (подсказка). Все коммиты в истории равны и анонимны. Если вам нужны именованные ветви, чтобы каждый коммит носил имя ветви, вы можете использовать Mercurial.
Сампо Смоландер
7
@CharlesBailey: Мне нравятся цвета ссылок с git log --graph --all --oneline --decorate. У меня есть псевдоним, git graphкоторый использует --pretty(чтобы показать другие вещи, такие как автор и дата), но %dтам не дает мне цвета --decorate. Я использую желтый для всех моих рефов на данный момент, вы знаете , как я могу позволить --pretty«s %dстроку наследуют цвета --decorate?
Готье
3
@ Gauthier Если вы хотите, чтобы в ваших --prettyформатах были цвета по умолчанию , добавьте %C(auto)перед элементом то, что должно быть окрашено. напримерgit log --pretty=format:"%cd %h %cn %s %C(auto)%d"
Radon8472
7

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

Я исследую риск с помощью blackboxшифрования, когда репозиторий и его ветви / теги могут стать недоступными для текущего, adminsкогда достаточное количество пользователей покидают проект, и keyringsкаталог не был религиозно основан на оригинале)

Я обнаружил, что ответ ниже был полезен, когда keyringsкаталог не был обновлен с master ...

В основном добавление --sourceбыло то, что мне нужно, чтобы показать ветви / теги. Добавление --name-onlyтакже покажет, какой файл был фактически изменен.

cd /path/to/repo-that-uses-blackbox-encryption
git log --graph --all --decorate --source --name-only keyrings

Еще один полезный ответ: как показать git log с именем ветки

Android Control
источник
Для меня --sourceодин дает HEADдля всех коммитов. В сочетании с --allэтим, кажется, различают разные ветви, но отображаемая информация не та, которую я ожидаю: для коммитов, которые я сделал master, вместо того, чтобы получить refs/heads/master, я получаю некоторую приватную ветвь ( refs/remotes/origin/…). Я подозреваю, что слияния и / или новые ветки приводят к Gitпотере исторической информации.
vinc17
Вместо этого --allя могу фильтровать ветки с помощью --branches --remotes=<pattern>, но как только две ветки слились воедино, у Git больше нет информации о том, какая из них имела коммит, когда он был сделан.
Vinc17
1

Если вы используете oh-my-zsh в качестве терминала, то вам доступны несколько псевдонимов git. Все это можно увидеть в репозитории oh-my-zsh / plugins / git . Если вы не используете этот терминал, вы можете просто взять псевдонимы и вставить те, которые вам нравятся, в вашу среду.

Принятый ответ представляет git log --graph --all --decorateкоманду, которая доступна как glggaпсевдоним в oh-my-zsh.

Лично я предпочитаю glodsпсевдоним, который переводится как:

git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short
Саймон
источник