我正在尝试为git log自定义格式。我希望所有提交都显示在一行中。每行应该只显示提交消息的第一行。
我发现git log --pretty=short应该可以解决问题,但是在我的计算机上,它显示的完整日志与git log一样(除了时间戳)。

此外,我尝试使用手册页中定义的占位符。但是,我找不到缩短日志消息的命令。我尝试了这行git log --pretty=format:'%h : %s',该行在一行中显示了短哈希值%h和完整消息%s。与我编写提交消息的方式有关。这是一个例子:

评论

%s是主题,不是完整的消息。

很难说出您真正想要的是什么。短格式不是全部都在一行上,尽管(惊奇!)单行是。如果oneline和%h:%s不是您想要的,那么这有什么问题呢?特别是,%s是主题,即提交消息的第一行。确实应该是简化版本。您是否可能已经用一条长行提交了该消息,并以自动换行的方式查看了它们?

你完全明白问题是,至少在我的计算机上,oneline和%s无法输出期望的结果。我用提交消息的示例更新了我的帖子。也许有帮助。

#1 楼

您尝试过吗?

git log --pretty=oneline --abbrev-commit


问题可能是您在第一行之后缺少空行。上面的命令通常对我有用,但是我只是在没有空第二行的提交上进行了测试。我得到的结果与您相同:整行都在一行上。

空的第二行是git commit消息中的标准。您看到的行为可能是故意实现的。

提交消息的第一行是简短描述。如果不能在一行中使用它,则可以使用多个,但是git会将第一个空行之前的所有内容视为“简短说明”。 oneline打印整个简短描述,所以您的所有3行。

评论


谢谢!您解决了这个谜团:在我的提交消息的第一行之后,我没有空行可以将主题与其余部分分开。不过,如果我可以随意放入或保留它,那就太好了。

– JJD
2010-12-21 9:54



没问题。实际上,您可以随意使用空行。如果您将其保留,则整个消息将成为短消息。我喜欢这个简短描述/详细描述,并且我想将简短描述限制为一行是一个问题,因此需要空行。您总是可以将git log的输出通过管道传递到过滤脚本,但我确实主张用空行写一个简短的描述。

–Gauthier
2010-12-21 10:27

还有git log --oneline --oneline是一起使用的“ --pretty = oneline --abbrev-commit”的内置简写。

–杰里米·洛根(Jeremy Logan)
13年4月23日在21:26

如何摆脱前缀缩短的主题标签?并不是说它不是很漂亮。但不切。那将很尴尬……(顺便说一句数学问题:在存储级别上,正确编码的霍夫曼序列中下一位打开或关闭的几率是多少?提示:=== 50%。)

–短语
2014年5月19日下午3:14

就是那个。哦,我的页面也充满了s,所以我自然为'%s'添加了%。 C-;

–短语
14年7月17日在18:15

#2 楼

git log --oneline能做什么吗?

评论


我不希望将整个提交消息合并到一行。我只想查看每个提交消息的第一行。

– JJD
2010-12-19 11:45

@JJD看到我的回答。

–铁皮科
10月5日7:50



#3 楼

通过创建别名,更好和更容易的git log。对于一个会话,只需将以下代码粘贴到终端一次即可。将代码粘贴到zshrc或bash配置文件中以使其持久。

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


输出

git lg


输出已更改行

git lg -p


(推荐)
将此代码粘贴到全局.gitconfig文件中

[alias]
  lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit



更多阅读.https://coderwall.com/p/euwpig/a-better-git-log高级阅读.http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced -examples /

评论


该示例很好地演示了漂亮的格式,但是“下面的代码仅粘贴到终端一次”似乎是错误的,因为它不会为“ git lg”创建别名

–Drone2537
17年7月3日在17:40

请注意,如果您批量执行此命令,请将%替换为%%,将'替换为“”。结果= git log --color --graph --pretty =格式:“ %% Cred %% h %% Creset-%% C(黄色)%% d %% Creset %% s %% Cgreen(%% cr) %% C(粗体蓝色)<%% an> %% Creset” --abbrev-commit%1。您可以将-p传递到此bat文件以获取更改的行

– Dheeraj Bhaskar
3月29日12:20



#4 楼

如果您不希望散列,而只是第一行(主题行):
git log --pretty=format:%s


评论


主题的%s; %b代表身体;两者均使用%B(git-scm.com/docs/pretty-formats中的“原始正文”)

– Mathieu CAROFF
1月6日23:21

#5 楼

您可以定义全局别名,以便以更舒适的方式调用简短日志:

您已启用它。)

#6 楼

没有提交消息,仅散列:

git log --pretty=oneline | awk '{print }'


评论


如果只需要哈希... git log --pretty = format:“%H”

– michael_j_ward
17年1月9日,14:47

如果只希望散列,还可以使用git rev-list HEAD。

–法比奥说恢复莫妮卡
19年5月5日在12:52

#7 楼

git log --format =“%H” -n 1
使用上面的命令获取提交ID,希望对您有所帮助。

评论


我使用git log --format =“%h%B” -1,然后在javascript中,我在\ n上分割并采用了第一行(即使没有换行符,该行仍然有效)

–德文·罗德(Devin G Rhode)
9月17日18:41

#8 楼

如果您只希望消息的第一行(主题):
git log --pretty=format:"%s"

,并且如果您希望此分支上的所有消息都返回主目录:
尤其重要的是,如果您想为快速降价发布说明添加小项目符号:
git log --pretty=format:"%s" master..HEAD


#9 楼

如果您希望始终以这种方式使用git log,则可以通过

git config --global alias.log log --oneline
添加git别名,之后git log将打印通常由git log --oneline打印的内容

评论


这实际上不起作用,因为(A. git别名不能覆盖内置命令名称)和(B.“ log --oneline”周围需要带引号)。

– Max Nanasy
2013年3月15日20:43