【问题标题】:How to print lastest commit time of every sub folder in git repo?如何打印 git repo 中每个子文件夹的最新提交时间?
【发布时间】:2021-04-15 09:29:17
【问题描述】:

我知道我可以使用 git log 和漂亮的日志格式 %ci 来获取任何文件的最后提交时间。

git log -1 --pretty="format:%ci" /path/to/repo/anyfile.any

-1 将其限制为文件最后一次更改

我遇到的问题是我想清除一个巨大的 git repo 上的长期非维护子文件夹。
根据上次提交时间,我可以确认应该清除哪个文件夹。

此外,是否存在打印文件夹深度仅限于 1 级?

【问题讨论】:

    标签: bash git shell


    【解决方案1】:

    您可以使用 find-exec 选项来询问 git 对每个找到的目录的最后一次提交:

    find -maxdepth 1 -type d -not -name .git -exec git log -n1 --format=format:"%ci {}" -- \{} \;
    

    【讨论】:

    • 缺少右括号,以修复“不匹配的括号”。 find -maxdepth 1 -type d -not -name .git -exec git log -n1 --format=format:"%ci {}" -- \{\} \;
    【解决方案2】:
    find /path/to/repo -maxdepth 1 -type d \! -name .git
    

    使用命令find 列出最大深度为 1 的所有对象,仅过滤目录 (-type d) 并排除目录 .git\! 表示“不是”)。

    【讨论】:

      【解决方案3】:
      git -C /path/to/repo ls-tree -d --name-only HEAD
      

      使用git ls-tree,但列出来自HEAD 的目录,而不是来自文件系统的目录。

      【讨论】:

        猜你喜欢
        • 2019-09-15
        • 1970-01-01
        • 2021-09-21
        • 1970-01-01
        • 1970-01-01
        • 2021-10-27
        • 1970-01-01
        • 2020-08-13
        • 1970-01-01
        相关资源
        最近更新 更多