我想查看指定目录中所有文件的git创建日期(添加它们的第一次提交日期)。
答案 0 :(得分:27)
我会将我的解决方案分解为步骤。
$ git ls-files
这将返回存储库中所有文件的相对路径列表。
$ git rev-list HEAD <file> | tail -n 1
这将以反向时间顺序返回给定文件的所有无父提交的列表。最后一个是给定文件的第一次提交的SHA-1哈希。
您可以通过运行git log --raw <hash>
来验证这一点。你应该看到类似的东西:
commit <commit_hash>
Author: Susy Q <suzy@example.com>
Date: Wed Aug 24 12:36:34 2011 -0400
Add new module 'example.py'
:000000 100644 0000000... <hash>... A example.py
$ git show -s --format="%ci" <hash>
#!/bin/bash
for file in $(git ls-files)
do
HASH=$(git rev-list HEAD "$file" | tail -n 1)
DATE=$(git show -s --format="%ci" $HASH --)
printf "%-35s %s\n %s\n" "$file" $HASH: "$DATE"
done
答案 1 :(得分:2)
嗯,我设计了一个不优雅的解决方案,但有点工作:
for file in dir/*; do echo -e "$file: \t\t `git log $file|grep Date|tail -1`"; done
它的工作原理是在每个文件上运行git log
,然后grep
来获取该文件的每次提交的日期。然后tail -1
确保我只获得第一次提交的日期。 echo -e "..."
只是为了以一种(不那么)友好的方式打印信息!