我的配置管理团队要求我生成一个发布中包含的所有文件的列表以及每个文件的最后一次提交的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.
我花了很多时间寻找这个答案,我有点需要找到并继续前进。您将给予的任何帮助将不胜感激。
答案 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将输出分页到你的终端。如果你要将输出重定向到一个文件,不要打扰。)