如何在存储库中列出所有文件及其提交SHA?

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命令得到的匹配。

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个回答

3

您好,以下内容是基于@AndyRoss的工作进行了大量改编:

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

谢谢Colin。你的答案添加了一些很好的东西到Andy的回答中(比如--format参数)。我相信,一旦我弄清楚了所有东西的含义,我就会成为一个更好的git用户。干杯。 - jarsenx

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而不是提交ID。
(上面的| cat是为了防止git将输出分页到你的终端。如果你要将输出重定向到文件,请不要费心。)

谢谢安迪提供这个答案。它给了我所有我需要的信息。我只需要再稍微调整一下格式就可以了。 - jarsenx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接