Как мне найти, какой файл пакета содержит мою фиксацию / дерево / большой двоичный объект / дельту?

#git

#git

Вопрос:

Я ищу решение с батарейками, если это возможно.

Я запустил git cat-file -p mycommit_sha1 , затем рекурсивно выполнил это на деревьях, чтобы в конечном итоге найти sha1 большого двоичного объекта интересующего меня файла.

git unpack-file myfile_blob_sha1 работает и создает временный файл. Но как он находит большой двоичный объект в файлах пакета 🙂 ?

В моем файле .git /objects / pack нет multi-pack-idx.

Комментарии:

1. Даже если у вас есть индекс с несколькими пакетами, это просто говорит вам, что у файла пакета есть объект, а не у всех файлов пакета (множественное число), которые имеют объект. Чтобы найти их все, вы должны отсканировать их все. Однако обратите внимание, что для поиска хэша большого двоичного объекта, если вы знаете коммит и путь, используйте git rev-parse hash:path/to/file.ext , и все готово.

Ответ №1:

Это было грязно с каким-то бахизмом :

for file in $(find .git/objects/pack -name '*.idx'); do git verify-pack -v "$file" | grep myblob_sha1 amp;amp; echo "$file"; done