git - 按最后修改日期的顺序列出文件

标签 git

我的仓库逾期未清理。我认为一个好的起点是按照上次触摸的顺序列出所有文件,并从最旧的文件开始。有办法实现吗?

最佳答案

没有办法(据我所知)使用标准的 git 命令来做到这一点。您需要的是对整个存储库进行某种git blame,确定历史记录中更改每个文件的最后一次提交。当然,您可以使用标准的 git blame,解析 porcelain 输出以识别向文件添加内容的最新提交的时间戳,并根据该时间戳对文件进行排序:

#!/bin/bash

function last-modified()
{
    git blame -p "$1" | awk '
        BEGIN {
            print 0;
        }
        $1 == "author-time" {
            print $2;
        }' | sort -n | tail -n 1
}

function list-files()
{
    for file in $(git ls-files); do
        echo "$(last-modified $file) $file"
    done
}

list-files | sort -n

不过,此方法只能注册添加 到文件中的内容,不能注册从文件中删除 的内容。此外,当您的存储库中有以 author-time 开头的行时,它会中断。

关于git - 按最后修改日期的顺序列出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23350139/

相关文章:

Git 无法使用 IntelliJ 或 SourceTree 在我的项目上提交 Angular 文件夹

git - github 分支与我推送的差异

github 配置机器使用现有的 ssh key

xcode - Xcode使用git如何解决project.pbxproj的冲突?

git - 在 git 中对大文本文件进行版本控制

git - 没有 Gerrit 的 Android repo 工具 `repo update`

git - "HEAD"在哪里定义为无效的分支名称?

git - Gcloud 无法与 git 一起使用

git - 撤消脏工作树上的 git stash pop

git - 我不确定本地存储库的 HEAD 是否位于主分支的最新点