如何在回购列表中列出所有文件及其提交SHA

时间:2013-05-21 16:21:39

标签: git

我的配置管理团队要求我生成一个发布中包含的所有文件的列表以及每个文件的最后一次提交的SHA。我正在试图弄清楚如何做到这一点,但我没有取得多大成功。我尝试使用ls-files命令,得到了看似有希望的结果(只显示一个文件作为示例):

serenity:ezdcadmin jarsen$ git ls-files app/views/users/edit.html.erb -s 
100644 e34b0f56f0e2e60393e8bffdbc1abe6e5ef0df54 0   app/views/users/edit.html.erb

但是当我为同一个文件运行log命令时,没有任何提交SHA与我使用ls-files命令获得的提交符匹配。

serenity:ezdcadmin jarsen$ git log --oneline app/views/users/edit.html.erb 
9e68c30 Merge differences
bc8accc bootstrap_buttons & sorting/filtering DONE
8aaf2c0 Revised user pages.
0acf2f0 Finished round two of Property pages.
990b262 Finished User flow - list, add, edit, delete
5e3069b Adding edit and delete user pages.

我花了很多时间寻找这个答案,我有点需要找到并继续前进。您将给予的任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

在这里,你很重视基于@AndyRoss的工作:

git ls-files | xargs -I file bash -c "git --no-pager log -1 -z --format=%h file; echo \" file\""

答案 1 :(得分:2)

我坚持使用git log:

for i in `git ls-files`; do echo -n "$i "; git log -1 --oneline $i; done | cat

我认为,在git ls-files -s的输出中看到的哈希是blob ID,而不是提交。

(上面的| cat是为了防止git将输出分页到你的终端。如果你要将输出重定向到一个文件,不要打扰。)