在git中显示每个子目录的最新更改

Deq*_*ing 5 git github

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

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

Deq*_*ing 5

感谢 Klas Mellbourn 和 Nevik Rehnel 的回答,最后我将这两个版本合并为我的:

#!/bin/bash

FILES=`ls -A`
MAXLEN=0
for f in $FILES; do
    if [ ${#f} -gt $MAXLEN ]; then
        MAXLEN=${#f}
    fi
done
for f in $FILES; do
    str=$(git log -1 --format="%cr      [%cn]   %s" $f)
    printf "%-${MAXLEN}s -- %s\n" "$f" "$str"
done
Run Code Online (Sandbox Code Playgroud)

输出:

$ bash view.bash
android_webview   -- 4 months ago       [boxxx@chromium.org]    Disable testCalledForIframeUnsupportedSchemeNavigations
ash               -- 4 months ago       [osxxxx@chromium.org]   Rename _hot_ -> _hover_
cc                -- 4 months ago       [enxx@chromium.org]     cc: Let impl-side painting use smaller tiles
chrome            -- 5 weeks ago        [Deqing]     Set the nacl pipe to non-blocking
tools             -- 10 weeks ago       [Haxx Hx]    Add submodule tools/gyp
Run Code Online (Sandbox Code Playgroud)

  • 非常好!我在这里修改了一下:http://stackoverflow.com/a/17361406/846273 (2认同)

Kla*_*urn 3

在 PowerShell 中你可以创建这样的脚本

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

这会循环遍历当前目录中的所有文件,写出文件名、制表符(反引号“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
Run Code Online (Sandbox Code Playgroud)

GitHub 结果实际上也包含提交者,您也可以通过添加以下内容来获取[%cn]

Write-Host $_ "`t" (git log -1 --format="%cr`t%s`t[%cn]" $_)
Run Code Online (Sandbox Code Playgroud)

上面的脚本不能很好地处理长文件名,因为它依赖于制表符。这是一个创建格式良好的表格的脚本,其中每列的宽度与所需的宽度完全相同:

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
Run Code Online (Sandbox Code Playgroud)