首页 > 解决方案 > git命令获取特定目录下的所有文件并进行hash

问题描述

我正在尝试使用 git 获取特定目录下的所有文件。我正在使用git rev-parse origin/master获取主分支哈希。我现在想使用这个哈希来获取特定目录下的所有文件。

我可以使用该命令获取所有文件,git ls-tree -r masterhash --name-only --full-tree但想知道对于特定目录是否有更好的方法。

标签: git

解决方案


您可以使用如下语法为特定修订指定特定树:HEAD:sha256. 这指的HEAD是目录中修订版的树对象sha256(例如,对于 Git 项目存储库)。

如果您只想获取名称,可以这样做:

$ git ls-tree --name-only -r HEAD:sha256
block/sha256.c
block/sha256.h
gcrypt.h

如果您想要相对于存储库根目录的路径,请编写以下代码:

% git ls-tree --name-only -r HEAD sha256
sha256/block/sha256.c
sha256/block/sha256.h
sha256/gcrypt.h

您不需要--full-name--full-tree除非您相信您将在子目录中操作并且不想被限制在该子目录中。此外,虽然我在HEAD这里指定了,但您可以使用您喜欢的任何修订模式(请参阅 参考资料gitrevisions(7))。


推荐阅读