本文翻译自Useful tricks you might not know about git log。
如果您使用Git一段时间,那么您应该接触过git log。 众所周知,git log是一个简单的命令,可以帮助我们查看变更或项目历史记录。
即使如此简单,它仍然是一个非常强大的工具,它带有许多参数,可以帮助我们查看项目变更及其结构。 我们将在本文中看到一些最常用的参数。
git log —oneline
1 | git log --oneline |
此命令可帮助您以更简洁的方式查看提交。 它会将每次提交压缩到一行,并且只有很少的信息,例如较短的提交哈希值和提交消息。
按时间段过滤提交
这些命令将按给定的时间间隔过滤提交。 例如,-after参数将仅过滤在给定时间段之后的提交,而-before参数将仅过滤在给定时间段之前的提交。
1 | git log --after="2020-15-05" |
上面的命令将仅显示2020年5月15日之后的提交
1 | git log --after="2020-15-05" --before="2020-25-05" |
上面的命令将仅显示5月15日至5月25日的提交
您还可以使用以下日期格式
1 | git log --after="yesterday" // 仅显示昨天的提交 |
git日志与差异更改
1 | git log -p |
该命令将显示变更差异的日志。 这样您就可以知道每次提交中所做的更改。
在上图中,您可以看到git的变更差异。
按作者过滤提交
1 | git log --author="Srebalaji" |
上面的命令将过滤出特定作者所做的提交。 请注意,Git按正则表达式模式过滤。 因此不必担心必须使用精确的名称匹配或区分大小写。
git log命令可以接受多个参数,因此您可以根据需要进行组合。 例如,
1 | git log --after="1 week ago" --author="srebalji" -p |
上面的命令将过滤该作者过去一周的提交,并显示差异变更。
通过日志消息过滤提交
有时,您需要通过日志消息过滤提交。 Git接受一个正则表达式来搜索日志消息并显示所有匹配的提交。
1 | git log --grep="ISSUE-43560" |
上面的命令将按该模式过滤提交。 请记住,默认情况下,它区分大小写。
要使搜索不区分大小写,可以传递-i参数
1 | git log -i --grep="issue-43560" |
下面的命令使用正则表达式按两个问题ID来同时进行搜索。
1 | git log -i --grep="issue-43560\|issue-89786" |
通过文件过滤提交
有时,您需要根据已受影响的某些特定文件,查看该文件下所有的提交更改。 这将在许多场景出现。
1 | git log main.rb |
此命令将过滤该文件的提交记录。
您还可以同时传递多个文件参数值。
1 | git log main.rb search.rb login.rb |
您可以看到我已经传递了三个文件进行过滤。
请记住,您还可以传递多个参数。
1 | git log -i --grep="fix " main.rb search.rb |
该命令将过滤出对指定文件所做的提交更改,还将通过给定的搜索模式匹配日志消息。
通过文件内容过滤提交
您可能需要在提交历史中,按特定的字符串,添加的源代码中搜索。 这可以通过下面的命令
1 | git log -S"function login()" |
上面的命令将搜索字符串“ function login()”。 默认情况下,区分大小写。
您可以通过添加-i使其不区分大小写。 如需查看具体内容,您可以查看差异更改。
1 | git log -i -S"function login()" -p |
仅显示合并提交
此命令有助于我们了解对当前分支所做的合并。
1 | git log --merges |
上面的命令将仅仅显示当前分支中的合并提交。
显示分支之间的差异
1 | git log master..develop |
该命令将帮助您显示所有来自development的提交,但这些提交不在master分支中。这样,您可以知道有多少新提交添加到了master分支中不存在的develop分支中。请在比较之前确保您已经进行了本地的更新。
#自定义格式日志消息
Git还提供了用于自定义日志消息格式的参数。 您可以尝试使用这些自定义漂亮参数以获得更多信息。
例如,
1 | git log --pretty=format:"%Cred%an - %ar%n %Cblue %h -%Cgreen %s %n" |
您可以在上图中看到提交日志是自定义格式的。 这非常简单,如果您只想查看日志的特定详细信息,它会派上用场。
今天就这样:)
如有任何疑问,您可以回复此电子邮件或发表评论。
谢谢,下周再见:) :)