如果打开存储库,则在github中,您将看到一个页面,显示每个子目录和文件的最新提交和时间。

我可以在git中通过命令行执行此操作吗?

最佳答案

在PowerShell中,您可以创建一个像这样的脚本

git ls-tree --name-only HEAD | ForEach-Object {
   Write-Host $_ "`t" (git log -1 --format="%cr`t%s" $_)
}

这将循环遍历当前目录中的所有文件,写出文件名,选项卡(反引号“t”),然后输出带有相对日期的git log,选项卡和提交消息。

样本输出:
subfolder        18 hours ago   folder for miscellaneous stuff included
foo.txt          3 days ago     foo is important
.gitignore       3 months ago   gitignore added

GitHub结果实际上也包含提交者,您也可以通过添加[%cn]来实现:
Write-Host $_ "`t" (git log -1 --format="%cr`t%s`t[%cn]" $_)

上面的脚本不能很好地处理长文件名,因为它取决于选项卡。这是一个脚本,用于创建格式良好的表,其中各列的宽度完全与所需的宽度相同:
git ls-tree --name-only HEAD | ForEach-Object {
  Write-Output ($_ + "|" + (git log -1 --format="%cr|%s" $_))
} | ForEach-Object {
  New-Object PSObject -Property @{
    Name = $_.Split('|')[0]
    Time = $_.Split('|')[1]
    Message = $_.Split('|')[2]
  }
} | Format-Table -Auto -Property Name, Time, Message

关于git - 在git中显示每个子目录的最新更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17007721/

10-12 17:09