我的配置管理团队要求我生成一个包含在版本中的所有文件的列表,以及每个文件最后一次提交的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.

我花了很多时间寻找这个答案,我需要找到它并继续前进。你能提供的任何帮助都将不胜感激。

最佳答案

我坚持使用git日志:

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

我相信,您在git ls-files -s的输出中看到的散列是blob id,而不是commit。
(上面的| cat是为了防止git将输出分页到您的终端。如果要将输出重定向到文件,请不要费心。)

10-07 19:10
查看更多