为了清理一些git存储库,我想列出所有超过一段时间没有收到任何新提交的文件(例如,让我们告诉一年)。
我知道如何列出 X 最近修改的文件,但不知道如何做相反的:)
谢谢。
下面是一个 1 行代码,用于显示去年未更改的文件:
git ls-files | grep -v "$(git log --pretty=format: --name-only --since='1 year ago' | sort | uniq)"
您也许可以将其包装在别名中,以便于调用。
编写一个遍历所有文件的脚本,从文件中提取修改日期,然后打印出来。
它与GIt无关:-)
<小时 />如果你想使用 git 命令来做到这一点,你不能使用 ls-tree
命令:
# loop over the files and print last modification date
git ls-tree -r --name-only HEAD | while read filename; do
echo "$(git log -1 --format="%ad" -- $filename) $filename"
done
<小时 />
ls-tree
列出树对象的内容
--name-only
- 仅打印出文件名
循环并打印出从文件日志的最后修改日期
要克服grep: Argument list too long
错误,必须通过文件工作:
$ git ls-files --full-name | sort > all.git
$ git log --pretty=format: --name-only --since='1 year ago' | sort | uniq > recent.git
$ comm -23 all.git recent.git
(comm
是一个仅限Linux的实用程序,希望其他平台也有类似的实用程序)