git:列出所有文件名和最新提交的哈希值

时间:2016-08-05 11:52:23

标签: git

我想得到我的分支中的所有文件的列表,最好是在树视图中,以及它们最后修改过的提交的哈希值(即不是文件本身的哈希值,而是提交的哈希值) 。有没有一个干净的git命令来执行此操作,还是我真的必须爬过日志?

此问题与How do I find the most recent git commit that modified a file?有关,但我想获取所有文件的列表,例如:

6f88a51 abc.h
3f5d6fb abc.cpp
3f5d6fb bcd.h
1964be2 bcd.cpp
...

3 个答案:

答案 0 :(得分:2)

rm -rf xx*/

那应该是伎俩,在bash上

答案 1 :(得分:1)

您只需使用ls-tree命令

即可
git ls-tree HEAD

这将显示带有哈希值的最新文件。

enter image description here

答案 2 :(得分:1)

命令:

$ git ls-files -z \ | GIT_PAGER= xargs -0 -L1 -I'{}' git log -n 1 --format="%h {}" -- '{}' f5fe765 LICENSE 0bb88a1 README.md 1db10f7 example/echo.go e4e5af6 example/echo_test.go ...

注意:

  • git ls-files列出了递归添加到git的所有文件(与find不同,它排除了未跟踪的文件和.git
  • xargs -L1为每个输入参数(文件名)
  • 执行给定命令
  • xargs -I{}允许使用输入参数(文件名)
  • 替换{}符号
  • 使用git ls-files -zxargs -0更改\n\0的分隔符,以避免文件名中出现空格问题
  • 清除GIT_PAGER阻止git log将其输出汇总到less