带有引用日志的 Git 图

标签 git

我正在尝试改进我的自定义 git 日志格式字符串。除了引用名称外,我几乎拥有我想要的一切。我已经可以得到类似于我想要的日志:

> git log --all --source --pretty=oneline --graph

* b7c7ad3855b54e94ad7ac03f2d2e5b96d6e5ac1d      refs/heads/b1 na
| *   695e1482622a79230fa1d83afb8d70e86847334a  refs/heads/master Merge branch 'b1'
| |\  
| |/  
|/|   
* | ec21f370f82096c0208f43b390da234d92e8c74a    refs/heads/b1 beta
* | c6bc1f55ab3b1bd568493a5de4298dfcb4f66d8d    refs/heads/b1 alfa
* | 762dd868ae87753afc1cbf9803744c76f9a9e121    refs/heads/b1 tango
| * 57fb27bff06ee9bb569f93ba815e9dcd69521c13    refs/heads/master little last post commit
|/  
| * 8d613d09b43152a7263b6e02d47ec8a4304f54be    refs/heads/b3 the other commit
| * e1f32b7cb86633351df06e37c2c58ef3f9fafc40    refs/heads/b3 something
|/  
| * 01b5c6728cf25dd576733211ce75dd3ecc29c7ba    refs/heads/b2 this time a

我正在努力使用我自己的格式字符串获得自定义输出,如下所示:

>  git log --pretty=format:'%h - %gD %s' --source -g        
b7c7ad3 - HEAD@{0} na
ec21f37 - HEAD@{1} beta
01b5c67 - HEAD@{2} this time a
01b5c67 - HEAD@{3} this time a
695e148 - HEAD@{4} Merge branch 'b1'
57fb27b - HEAD@{5} little last post commit

我的主要问题是我无法获得我想要的引用名称。我假设它是 %g 之一?格式字符串,但它们似乎都没有给我完整的引用名称。

另一个问题是 %g?格式字符串为空,除非我遍历 reflogs (-g)。但是 git 拒绝将 --graph 与 -g 结合使用

如何使用我可以进一步自定义的格式字符串重现第一个示例?

最佳答案

这是可能的。只需使用 %d 并提供 --decorate=full

$ git log --pretty=format:'%h %d'
bde5d58  (HEAD, origin/master, master)
dd4446d 
1eeab2a 
...

$ git log --decorate=full --pretty=format:'%h %d'
bde5d58  (HEAD, refs/remotes/origin/master, refs/heads/master)
dd4446d 
1eeab2a 
...

关于带有引用日志的 Git 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13439099/

相关文章:

windows - Git 预提交 Hook 不在 Windows 上添加文件

git - 如何在 .gitconfig 中使用 ANSI 256 色

git - 为 git 配置 SSH

git - 在 Windows 10 上安装 Git 1.9.5

linux - 'Git : gpg failed to sign the data' in visual studio code

Git 工作流程 - 在推送到公共(public) repo 之前或之后 merge master?

Git 子树 merge 策略 - 设置本身如何跨克隆进行?

Git: fork /远程/克隆概念

git - 为什么 git 将分支 merge 到自身?

git - Vim:在 vimrc 中有条件地使用 fugitive#statusline 函数