我希望得到git存储库历史中一组给定文件的行数。要获取当前工作副本,我可以调用wc -l $FILES
,但是如何使用时间戳为每个提交生成一个增长和缩小文件的图表?
答案 0 :(得分:0)
您可以使用git rev-list HEAD
获取所有提交哈希值的列表,然后为每次提交执行git checkout
并执行wc -l $FILES
。
示例:
$ export FILES="CMakeLists.txt README.md TODO.md"
$ git rev-list --reverse HEAD | xargs -I '{}' sh -c 'git checkout {} 2>/dev/null; git log -1 --pretty=%ci; wc -l $FILES 2>/dev/null'
输出:
...
2014-12-24 01:18:34 +0400
31 CMakeLists.txt
126 README.md
3 TODO.md
160 total
2014-12-24 01:57:36 +0400
35 CMakeLists.txt
126 README.md
3 TODO.md
164 total
2014-12-24 15:04:10 +0400
35 CMakeLists.txt
126 README.md
2 TODO.md
163 total
答案 1 :(得分:0)
我建议使用git log来达到你想要的效果。专门运行:
git log --numstat --pretty=format:
这将为您提供类似于:
的输出10 8 pom.xml
0 6 other/pom.xml
- numstat将为您提供插入次数(第一列)和删除次数(第二列)。使用上面的示例,pom.xml有10个插入和8个删除,另一个/ pom.xml有0个插入和6个删除。使用空格式,您只能看到文件随时间变化的输出。您可以使用该格式来为您提供提交的sha1或日期或任何对您的需求有用的内容。
git log --numstat --pretty=format:%ad #will give you the date
git log --numstat --pretty=format:%H #will give you the sha1
您需要稍微解析一下这些数据才能得到您的信息,但我相信这是您要求的信息。