git log的格式在哪里--oneline --decorate定义?
使用git Iog --format = format:'我的格式',我无法重现分支,标签和HEAD的颜色,如git log --oneline --decorate所示。
git log --oneline --decorate
显示浅蓝色的HEAD,绿色的分支名称和棕色的标点符号(。)。
我最接近得到我想要的是:
git log --graph --abbrev-commit --decorate --date=short --format=format:'%C(bold blue)%h%C(reset) %C(bold green)%ad%C(reset)%d %C(white)%s%C(reset)' -20
唯一的区别是branches / HEAD /标签没有像上一个命令那样着色。
答案 0 :(得分:4)
git版本似乎不可能< 1.8.3。
从git 1.8.3开始,可以使用颜色%C(自动)令牌:
git log --graph --abbrev-commit --decorate --date=short --format=format:'%C(bold blue)%h%C(reset) %C(bold green)%ad%C(reset) %C(auto)%d %C(reset) %C(white)%s%C(reset)' -20
关键要素是:
%C(auto)%d %C(reset)
另见:
答案 1 :(得分:2)
TL; DR - 我认为您无法获得$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\temp\test"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
$created = Register-ObjectEvent $watcher "Created" -Action {
write-host "Created: $($eventArgs.FullPath)"
Get-Date -Format "HH:mm:ss" | Out-File "C:\temp\log.txt" -Append
}
提供的确切格式,因为git log --oneline
选项不支持&--format
#39; t允许任何条件语句,而git-log
使用函数在每个提交消息上生成该字符串。
我最接近颜色的是:
git log --format=format:'%C(auto)%h%C(reset) %C(auto)%s%C(reset)'
在我的机器上看起来像这样:
长版:
您可以在git-log上阅读的大部分文档都在这里:https://git-scm.com/docs/git-log
我深入研究了源代码(可在github here上找到),看看git对--oneline
选项的确切作用,这里是我发现的:
该路径从revision.c
开始,其中解析命令行选项
然后在pretty.c
中解析该选项,以匹配CMIT_FMT_ONELINE
枚举的cmit_fmt
(在commit.h
中定义)
最后,实际打印在pretty.c
pp_commit_easy
处进行。
这是一个棘手而复杂的地方。您可以在CMIT_FMT_ONELINE
的少数几个地方看到对pretty.c
的引用。我相信在指定--oneline
选项时,每次提交只执行pp_title_line
。您可以看到,随着字符串缓冲区的构建,会出现一堆条件格式。
所以是的,我认为没有办法用标签和(HEAD -> master)
元信息复制实际格式。您可以编写一个执行相同操作的shell脚本,但其性能可能与git的性能不匹配。