如何仅输出第一行的 git log?

How to output git log with the first line only?

提问人:JJD 提问时间:12/19/2010 最后编辑:JJD 更新时间:9/15/2023 访问量:300132

问:

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

此外,我尝试使用手册页中定义的占位符。不过,我找不到缩短日志消息的命令。我尝试了这一行,它在一行中显示了短路哈希和完整消息。git log --pretty=format:'%h : %s'%h%s

我在 Vista 上使用。git version 1.7.3.1.msysgit.0


也许这与我编写提交消息的方式有关。下面是一个示例:

Added some functionality.
+ Added print function in Foo class.
+ Added conversion from foo to baz.

因此,在给出的示例中,我只想以短尾哈希为前缀的输出。Added some functionality.

git 版本控制 格式化 日志记录 commit-message

评论

1赞 Josh Lee 12/19/2010
%s是主题,而不是完整的消息。
0赞 Cascabel 12/19/2010
真的很难说出你真正想要的是什么。不过,格式并不都在一行上(令人惊讶! 是。如果不是你想要的,他们有什么问题?特别是,是主题,是提交消息的第一行。这确实应该是一个缩短版本。您是否有可能一直在为消息使用一长行进行提交,并使用自动换行以某种方式查看它们?shortonelineoneline%h : %s%s
0赞 JJD 12/19/2010
你完全明白。问题是,至少在我的计算机上,不要输出我们期望的内容。我用我的提交消息示例更新了我的帖子。也许它有帮助。oneline%s

答:

219赞 9000 12/19/2010 #1

做你想做的事吗?git log --oneline

评论

1赞 JJD 12/19/2010
我不希望将整个提交消息合并到一行上。我只想看到每条提交消息的第一行。
1赞 technophyle 10/5/2020
@JJD 看看我的答案
-10赞 noisy 12/19/2010 #2

如果你想一直以这种方式使用,你可以通过以下方式添加 git 别名git log

git config --global alias.log log --oneline

之后将打印通常由git loggit log --oneline

评论

15赞 Max Nanasy 3/16/2013
这实际上不起作用,因为 (A. git 别名无法覆盖内置命令名称) 和 (B.周围需要有引号)。"log --oneline"
803赞 Gauthier 12/20/2010 #3

你试过这个吗?

git log --oneline 

它是 的别名,显示“short sha”和“short description”,例如:git log --pretty=oneline --abbrev-commit

9bee8857 Write more code
831fdd6e Write some code Second line of message

问题是您在提交消息的第一行之后缺少一个空行。上面的命令通常对我有用,但我只是在没有空第二行的提交上进行了测试。我得到了和你一样的结果:整个消息都在一行上。

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

提交消息的第一行是简短的描述。如果你不能在一行中使用它,你可以使用几行,但 git 认为第一个空行之前的所有内容都是“简短描述”。 打印整个简短描述,因此所有 3 行。oneline

评论

1赞 JJD 12/21/2010
谢谢!你解开了这个谜团:我在提交消息的第一行之后没有空行来将主题与其他主题分开。不过,如果我可以自由地把它放进去或放出来,那就太好了。
1赞 Gauthier 12/21/2010
没关系。事实上,你可以自由地拥有或不拥有空行。只是如果你把它省略了,你的整个信息就会变成短消息。我喜欢这个简短描述/详细描述,我想简短描述仅限于一行是一个问题,因此需要空行。你总是可以将输出通过管道传递到过滤脚本,但我真的建议用空行写一个简短的描述。git log
120赞 Jeremy Logan 4/24/2013
还有 --oneline 是“--pretty=oneline --abbrev-commit”的内置简写。git log --oneline
0赞 Phlip 5/19/2014
你如何摆脱前面的缩短主题标签?并不是说它不漂亮。但是没有.那将是病房......(顺便说一句,数学问:在存储级别,正确编码的霍夫曼序列中的下一个位是打开还是关闭的几率是多少?提示:它是 === 50%。cutawk
7赞 Phlip 7/18/2014
就是这样,TX。哦,还有,我得到了一个充满 s 的页面,所以我自然而然地添加了一个 for .C-;%'%s'
29赞 That Brazilian Guy 9/13/2013 #4

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

git config --global alias.slog "log --pretty=oneline --abbrev-commit"

然后你可以使用它(如果你启用了它,它甚至可以与自动完成一起使用)。git slog

75赞 atilkan 4/20/2016 #5

通过创建别名更好、更容易地 git 日志。将下面的代码粘贴到终端一次,用于一个会话。将代码粘贴到 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/

评论

0赞 Drone2537 7/4/2017
这个例子是一个很好的漂亮格式演示,但是“将下面的代码粘贴到终端一次”似乎是错误的,因为它没有为“git lg”创建别名
1赞 Dheeraj Bhaskar 3/29/2020
请注意,如果将此命令批量放置,请将 % 替换为 %%,将 ' 替换为 “”。结果= 。您也可以将 -p 传递给此 bat 文件以获取更改的行git log --color --graph --pretty=format:"%%Cred%%h%%Creset -%%C(yellow)%%d%%Creset %%s %%Cgreen(%%cr) %%C(bold blue)<%%an>%%Creset" --abbrev-commit %1
12赞 otiai10 6/15/2016 #6

如果没有提交消息,只有哈希值:

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

评论

9赞 michael_j_ward 1/9/2017
如果你只想要哈希...git log --pretty=format:"%H"
0赞 Fabio says Reinstate Monica 6/5/2019
如果你只想要哈希值,你也可以使用 .git rev-list HEAD
134赞 technophyle 8/24/2018 #7

如果您需要打印不带提交哈希的主题行:

git log --pretty=format:%s

这将产生如下内容:

Upgrade framework to v2
Add a new module
Hotfix for the production crash

正如 Mathieu 所提到的,你可以只用于身体,也可以同时用于两者。%b%B

评论

19赞 Mathieu CAROFF 1/7/2020
%s对于主题; 对于身体; 对于两者(git-scm.com/docs/pretty-formats 中的“原始身体”%b%B)
5赞 user2853343 7/22/2020 #8
git log --format="%H" -n 1 

使用上面的命令获取 commitid,希望这会有所帮助。

评论

1赞 Devin Rhode 9/18/2020
我使用了 git log --format=“%h %B” -1,然后在 javascript 中,我在 \n 上拆分并取第一行(即使没有换行符仍然有效)
7赞 gMale 8/28/2020 #9

如果您只想要消息的第一行(主题):

git log --pretty=format:"%s"

如果您希望此分支上的所有消息返回到 master:

git log --pretty=format:"%s" master..HEAD

最后但并非最不重要的一点是,如果你想为快速降价发行说明添加一些小项目符号:

git log --pretty=format:"- %s" master..HEAD

评论

1赞 LunaCodeGirl 4/16/2021
在每行之前添加项目符号的触感很好!
12赞 Eng_Farghly 9/23/2021 #10

如果要打印并且仅打印commit-idcommit message

git log --pretty=format:"%h %s"

%h 是 的简写,%shash_idsubjectName[message_name]



您可以通过以下命令显示日期:commit-idmessage

git log --pretty=format:"%h %s %C(yellow)(%cr)"

%C是颜色的简写,例如,我想用不同的颜色显示日期。(red,green,blue, yellow,...etc)

%cr是 committer date 的简写,相对


或者,您可以使用此命令进行打印和提交消息:hash_idfirst word

git log --oneline | awk '{print $1 " " $2}'

git log --oneline