有没有一种方法可以查看 Git 中最后一次 N 提交的注释和时间列表?
在查看 SO 之后,我发现唯一相关的事情是 Git-get 所有他们创建的提交和 blob ,但是它显示所有用户的所有提交,并输出许多其他信息。
在 git log中使用 --author和/或 --committer过滤选项,再加上 -n选项来限制提交的次数。例如:
git log
--author
--committer
-n
git log --author='Salvador Dali' -n 10
git log --author="My name" -n 5(所有备选方案见 man git-log)
git log --author="My name" -n 5
man git-log
如果要使用命令行,可以使用 --author=<your name>
--author=<your name>
例如: 查看最后5次提交
git log -n 5 --author=Salvador
如果你想要一个简单的一行解决方案:
git log --oneline -n 5 --author=Salvador
编辑添加
如果您喜欢单行版本,请尝试为 git log创建一个别名,如下所示(这是我为 zsh 创建的别名)
alias glog="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
现在,我可以用:
glog -n 5
我得到了一个很好的输出,比如:
它是彩色的,显示了作者的名字,并且还显示了图表,您仍然可以传入其他标志(例如—— author) ,这使您可以对其进行更多的过滤。
git log --format="%h %B" --oneline -n 1
这将获得带有缩写提交 ID 的最新 git 日志注释块。
git log --format="%H %B" -n 1
这将获得带有完整提交 ID 的最新 git 日志注释块。
您可以从 基特漂亮格式构建自己的格式
请参见最后 N 次提交的注释列表
git log --oneline -10
检查一下旧的犯罪记录
git ckeckout 3e6bb80
在检出以前的提交之后返回到最新的提交
git checkout -
如果您只在最后一个 X git 提交消息之后,下面的命令将为您提供最后5个提交消息,它们是由新行分隔的字符串:
git log -5 --oneline --format=%s | sed 's/^.*: //'
会输出这样的东西:
Remove references to Node 8 Move ESLint cache file into node_modules Update postcss packages Add TypeScript 4.x as peerDependency to react-scripts Create FUNDING.yml
Git log —— max-count = 15—— pretty = “ format:% C (dim green)% < (9,trunc)% ar% C (粗体洋红)% h% C (粗体绿)% < (12,trunc)% an% C (粗体) 黄色)% < (113,trunc)% s”——不合并
注意... 黄色)% < (113,trunc)113是修剪注释的长度,以允许完全自定义,而不需要——一行覆盖您的设置。
正如已经说过的,这可能是别名,或者我已经包装在一个 Powershell 函数中。
下面的内容超出了 OP 的范围,但是给线程带来了一些价值。
我知道我太激动了,但这就是我们的工作。
function logs() { <# .SYNOPSIS Shows my logs .DESCRIPTION Returns an abreviated list of logs meeting the filtering provided including max returned, committor by case sensitive pattern, branch, local or remote, and a 'my' shourcut to get the callers commits only .EXAMPLE PS>logs [ Basic usage gets maximum 15 logs from the origin/<current branch> ] origin/master logs git log origin/master --max-count=15 --pretty="format:%C(dim green) %<(9,trunc)%ar %C(bold magenta)%h %C(bold green)%<(12,trunc)%an %C(bold yellow)%<(113,trunc)%s" 2 days .. b6e4d0b Joe Johnston Added Posh 2 days .. 0f1a166 Joe Johnston Updated the profile system 4 days .. dfd3115 Joe Johnston added .net install and pinned applications. Updated git functions 6 weeks.. 47bd9e9 Joe Johnston updated functions 3 month.. 5148f09 Joe Johnston initial add .EXAMPLE PS>logs -l [ Usage gets maximum 15 local logs from the <current branch> ] logs git log --max-count=15 --pretty="format:%C(dim green) %<(9,trunc)%ar %C(bold magenta)%h %C(bold green)%<(12,trunc)%an %C(bold yellow)%<(113,trunc)%s" 3 hours.. efb36e9 Joe Johnston updated profile to set-execution 3 hours.. 4355a00 Joe Johnston Merge branch 'master' of https://github.com/xxx 3 hours.. 84cd380 Joe Johnston updated gitfunctions - added undomerge 2 days .. b6e4d0b Joe Johnston Added Posh 2 days .. 0f1a166 Joe Johnston Updated the profile system 4 days .. dfd3115 Joe Johnston added .net install and pinned applications. Updated git functions 6 weeks.. 47bd9e9 Joe Johnston updated functions 3 month.. 5148f09 Joe Johnston initial add .EXAMPLE logs 25 [ Usage gets maximum 25 logs from the origin/<current branch> ] .EXAMPLE logs -m -c 20 [ Usage gets maximum 20 local logs from the <current branch> commited by me] .EXAMPLE logs -b dev/iOS -c 25 -l -c "Jackson" [ Usage gets maximum 20 local logs from the <current branch> commited by the <pattern> Jackson] #> [cmdletbinding()] Param( [parameter(Mandatory=$false,ValueFromPipeline)] [Alias('c')] [int]$Count = 15, [parameter(Mandatory=$false,ValueFromPipeline)] [Alias('b')] [string]$Branch = "Current", [parameter(Mandatory=$false,ValueFromPipeline)] [Alias('u')] [Alias('user')] [string]$Committer = "", [parameter(Mandatory=$false,ValueFromPipeline)] [Alias('m')] [Alias('me')] [Alias('onlyme')] [switch]$My = $false, [parameter(Mandatory=$false,ValueFromPipeline)] [Alias('g')] [switch]$Graph = $false, [parameter(Mandatory=$false,ValueFromPipeline)] [Alias('sm')] [Alias('merge')] [switch]$ShowMerges = $false, [parameter(Mandatory=$false,ValueFromPipeline)] [Alias('r')] [switch]$Remote = $false ) $merge = '--no-merges'; if ($ShowMerges) { $merge = ''; } $Pretty = "--pretty=`"format:%C(dim green) %<(9,trunc)%ar %C(bold magenta)%h %C(bold green)%<(12,trunc)%an %C(bold yellow)%<(113,trunc)%s`""; #git config --global format.pretty $Pretty if ($Branch -eq "Current") { $Branch = git symbolic-ref --short HEAD; write-host "************************************************"; } else { write-host "================================================"; } if ($Remote -eq $true) { $Where = "origin/$Branch"; } if ($Graph -eq $true) { $GraphTag = "--graph"; } if([string]::IsNullOrEmpty($Committer) -eq $false) { $Who = $Committer; $Committer = "--committer=" + $Committer; write-host $Who } if ($My -eq $true) { $me = git config user.name; $Committer = "--committer=`"$me`""; $Who = "**MY**"; } write-host "$Who $Where logs" -foregroundcolor "Red"; $commandOut = "git log $Where $GraphTag --max-count=$Count $Pretty $Committer $GraphTag $merge"; write-Verbose $commandOut; write-host; git log $Where --max-count=$Count $Pretty $Committer $GraphTag $merge write-host }
像 less一样工作,有漂亮的格式,没有提示继续:
less
git --no-pager log --decorate=short --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' -n5
效果很好