从文件中获取 Blob ID

问题描述 投票:0回答:2

如果我有一个 存储库 commit ffded2bb9b398af20fbc2f3e11c74b546f4c9764

我想使用 bash 获取给定文件夹(以及可能的子文件夹)中所有文件的 blob ID。但我不明白怎么办。

由于我是 blob 新手,我不明白 在线手册。

git blob
2个回答
1
投票

几个选项:

git ls-tree

git-ls-tree - 列出树对象的内容

git ls-tree ffded2bb9b398af20fbc2f3e11c74b546f4c9764

git log

# get the tree (%T) object of the given commit
git log ffded2bb9b398af20fbc2f3e11c74b546f4c9764 -1 --pretty=%T

git diff-tree

git-diff-tree - 比较通过两个树对象找到的 blob 的内容和模式

# Get the SHA-1 of the files in the given commit
git diff-tree ffded2bb9b398af20fbc2f3e11c74b546f4c9764

0
投票

总长:

git cat-file -p `git cat-file -p ffded2 | head -1 | cut -f2 -d\ `
提交上的

cat-file 将为您提供如下摘要:

tree 143b70383b734d62402f70f348aeea4274ce861b
parent f16817d149bca8e07831a78a2a7f55a3dcbb3ccd
author NAME <EMAIL> 1700159016 -0600
committer NAME <EMAIL> 1700159016 -0600

COMMIT MESSAGE

因此,您可以获取树 ID,这是第一行中的第二个标记(我使用

head
cut
完成),并将其传递给
git cat-file -p
将列出带有 blob ID 的目录,如下所示:

100644 blob 5169a5e4135e9f7e5ff7b2c835dfb34e48202ff7    LICENSE
100644 blob 2b670dd63ad28cbce62171fe96f89796ece8b064    README.md
040000 tree 278c0d7f7a312e0af40154a6dbfabc0fb779bd43    src

然后您可以从中获取 blob ID。

© www.soinside.com 2019 - 2024. All rights reserved.