3

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

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.

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

4

2 回答 2

3

在这里,很大程度上基于@AndyRoss 的工作:

git ls-files | xargs -I file bash -c "git --no-pager log -1 -z --format=%h file; echo \" file\""
于 2013-05-21T16:32:45.087 回答
2

我会坚持使用 git log:

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

我相信,您在 of 的输出中看到的散列git ls-files -s是 blob ID,而不是提交。

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

于 2013-05-21T16:28:17.757 回答