如何从提交对象 git ls-tree?
How to git ls-tree from a commit object?
根据文档,为了使用 git ls-tree
,您需要传递树对象的哈希值。如果我想从提交对象开始获得 git ls-tree
的相同输出怎么办?
我显然可以用这样的方法来做到这一点:
git ls-tree $(git cat-file -p my_commit | grep -oP "(?<=tree ).*")
但我觉得我是在重新发明轮子。是否有 git 命令已经执行此操作?
不,git ls-tree
需要一个tree-ish object。
这里的“-ish”后缀很重要。根据 Cambridge Dictionary:
-ish suffix (QUITE)
used to form adjectives to give the meaning to some degree; fairly:
- He had a sort of reddish beard.
- She was oldish - about 60, I'd say.
- We'll start at sevenish (= about seven o'clock).
在这种情况下,“树状”的意思是像一棵树。当然,一棵树就像一棵树。但是 commit 也 像一棵树 因为它只有一个树组件;这意味着您可以通过简单地使用提交本身明确地引用该树。
那么,git ls-tree <commit-ish>
.
根据文档,为了使用 git ls-tree
,您需要传递树对象的哈希值。如果我想从提交对象开始获得 git ls-tree
的相同输出怎么办?
我显然可以用这样的方法来做到这一点:
git ls-tree $(git cat-file -p my_commit | grep -oP "(?<=tree ).*")
但我觉得我是在重新发明轮子。是否有 git 命令已经执行此操作?
不,git ls-tree
需要一个tree-ish object。
这里的“-ish”后缀很重要。根据 Cambridge Dictionary:
-ish suffix (QUITE)
used to form adjectives to give the meaning to some degree; fairly:
- He had a sort of reddish beard.
- She was oldish - about 60, I'd say.
- We'll start at sevenish (= about seven o'clock).
在这种情况下,“树状”的意思是像一棵树。当然,一棵树就像一棵树。但是 commit 也 像一棵树 因为它只有一个树组件;这意味着您可以通过简单地使用提交本身明确地引用该树。
那么,git ls-tree <commit-ish>
.