如何使用git log --graph显示标签名和分支名

21

我正在使用gitk --all命令查看git日志,但是gitk不会在每个提交中显示sha哈希值,您需要手动单击提交以查看sha哈希值。我想要在单个视图中看到sha哈希值和分支名称。

如何使用git log命令显示标记名称和分支名称。


注意:如果您需要那些没有括号的分支名称,现在可以使用%D选项(而不是%d),这是从Git 2.2(2014年11月)开始的。请参见我下面编辑过的答案。 - VonC
2个回答

46

使用git log(而不是gitk),你可以在漂亮的格式中使用装饰选项(%d)来显示分支名称(但仅适用于作为该分支“HEAD”的提交):

alias.lgb=log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset%n' --abbrev-commit --date=relative --branches

(您必须使用以下方式声明该别名:

git config --global alias.lgb "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset%n' --abbrev-commit --date=relative --branches"

然后你可以使用 'git lgb' 命令。注意:你也可以给它取不同的别名。

会得到:

* e33afe7 - (HEAD, master) fix zlib make install issue on cygwin (8 seconds ago) <VonC>
|
* f825f36 - add CPPFLAG option for cygwin compilation of gcc (26 hours ago) <VonC>
|
* 9341979 - (origin/master, origin/HEAD) update error messages for compiling gcc within cygwin (2 days ago) <VonC>
|
* 42d81af - copy dll in $H/usr/local/bin instead of linking when compiling in cygwin (3 days ago) <VonC>

更新 Git 2.2(2014年11月):请参见 提交 9271095,由 Harry Jeffery(eXeC64 提供:

pretty: 添加%D格式说明符

添加一个新的格式说明符 '%D',其行为与 '%d' 相同,但不包括 '%d' 提供的 ' (' 前缀或 ')' 后缀。


1
我尝试了命令 "git log alias.lgb=log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset%n' --abbrev-commit --date=relative --branches",但是出现了错误 "fatal: ambiguous argument 'alias.lgb=log': unknown revision or path not in the w Use '--' to separate paths from revisions"。 - Talespin_Kit
@Talespin:我已经添加了正确的git config命令来声明该git别名。请参见https://dev59.com/L3A65IYBdhLWcg3wuhIR#3667139或http://www.jukie.net/bart/blog/pimping-out-git-log。 - VonC
谢谢!我已将此添加到我的dotfiles中!https://github.com/chrisjlee/dotfiles/blob/master/.gitconfig - chrisjlee
@chrisjlee еҘҪдё»ж„Ҹ :) жҲ‘е–ңж¬ўз”ЁдёҖдәӣbashеҲ«еҗҚжқҘиЎҘе……git lgе‘Ҫд»Ө: https://github.com/VonC/b2d/blob/bb0a9afb4195da083e77157d54cb626d1b9eaa1d/git/bash_aliases#L4-L7 - VonC
2
这是我长期以来最喜欢的别名,我无法为它投票。我还创建了一个lg别名,当我只想看到当前分支时,可以省略--branches...和带有ISO日期而不是相对日期的lgbd。请注意,为此我们需要将%Cgreen(%cr)更改为%Cgreen(%cd),否则--date选项将被忽略。 - scharette

2

我尝试了这个方法,可以在我的电脑上运行

git log --format='here you put formats you need for your case is like %d contain branch name and %cn committer  name ' | grep -F 'origin' 

这将列出所有分支名称及其提交者姓名。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接