如何在Git中获取当前目录的tree对象?
获取Git当前目录的Tree对象(不依赖$PWD)
要获取当前目录对应的tree对象,有两种不依赖$PWD环境变量的简洁方法:
方法1:用git ls-tree查看完整tree信息
git ls-tree -d HEAD :.
这里的:.'是Git的路径规格语法,专门指向当前工作目录对应的版本库目录,完全不依赖系统环境变量,执行后会输出当前目录tree对象的权限、类型、哈希和路径信息。
方法2:用git rev-parse仅获取哈希值
如果只需要tree对象的哈希字符串(适合脚本场景),用这个更高效:
git rev-parse HEAD:.
为什么git ls-tree -d HEAD .不生效?
因为.是Shell解析的路径,Git会将其识别为“当前目录下的所有条目”,加上-d参数后只会列出当前目录下所有子目录的tree对象,而非当前目录本身的tree。而:.'是Git内部解析的路径,直接指向当前目录对应的版本库对象,因此能精准获取目标tree。
内容的提问来源于stack exchange,提问作者CervEd
相关产品推荐
相关产品推荐

