Git show all branches (but not stashes) in log

眉间皱痕 提交于 2019-12-02 18:40:34

Instead of doing --all and then trying to filter out the stashes, don't ever include them in the first place:

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

The main problem that arises from trying to filter them out afterwards is that if the stash is the latest commit on that branch (because even though it's not the head of the branch, it's still the most recent descendant of it), it can actually filter out the entire branch from the log, which isn't what you want.

My alias:

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

In this case you will be able to use these forms without showing the stash:

  • git l for the current branch
  • git l feature234 for a specific branch
  • git l --all for the overall history

From the manual:

--exclude=<glob pattern>

Do not include refs matching that the next --all, --branches, --tags, --remotes, or --glob would otherwise consider.

Jakub Narębski

Note that Andrew's answer wouldn't work for hiding StGit1.) branches <branch>.stgit (from StGit version 0.15) which otherwise litter the output making it unusable.

Currently I use the following solution:

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

1.) StGit ("Stacked Git") provides Quilt/mq--like functionality to Git (i.e. pushing/popping patches to/from a stack).

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!