Git показать все ветки (но не stashes) в журнале

У меня есть псевдоним Git, который расширяется до:

git log --graph --oneline --all --decorate

В соответствии с man git log существует несколько подозрительных опций: --not и --branches; но я не могу заставить его работать правильно.

Как мне изменить это, чтобы скрыть скобки?


FYI: согласно принятому вопросу и comment my Теперь псевдоним .gitconfig выглядит следующим образом:

[alias]
    l = log --branches --remotes --tags --graph --oneline --decorate --notes HEAD

Ответ 1

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

git log --branches --remotes --tags --graph --oneline --decorate

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

Ответ 2

Обратите внимание, что Andrew answer не будет работать для скрытия StGit 1.) ответвления <branch>.stgit (из версии StGit 0.15), которые в противном случае помещают вывод, делая его непригодным.

В настоящее время я использую следующее решение:

$ git log --graph --oneline --decorate \
  $(git for-each-ref --format="%(refname)" refs/heads/ refs/remotes/ |
    grep -v "\.stgit$")

1.) StGit ( " St acked Git" ) предоставляет функциональность Quilt/mq как Git ( т.е. нажатие/всплывающие патчи в/из стека).

Ответ 3

Мой псевдоним:

[alias]
    l = log --oneline --decorate --graph --exclude=refs/stash

В этом случае вы сможете использовать эти формы, не показывая пристав:

  • git l для текущей ветки
  • git l feature234 для конкретной ветки
  • git l --all для общей истории

Из руководства:

- exclude = < glob pattern >

Не включайте ссылки, соответствующие следующей - all, --branches, --tags, --remotes или --glob в противном случае.