GIT: определить ревизию на основе файла

У меня есть файл из проекта, который использует GIT в качестве хранилища. Для этого файла мне нужно выяснить, к какой ревизии принадлежит этот файл. Файл является автономным за пределами хранилища (не отслеживается), поэтому стандартные команды git не работают.

Есть ли способ определить версию, к которой принадлежит этот файл, только на основе его имени и содержимого?

1 ответ

Решение

Я не думаю, что для этого есть команда с одним выстрелом - объектная модель git делает довольно трудоемким возврат из блоба к коммитам, которые могут ссылаться на него. Вот один из способов сделать это, однако. Прежде всего, найдите хеш файла, который будет использовать git, с помощью:

git hash-object foo.c

Предположим, что возвращается f414f31, Затем вы можете использовать скрипт, как показано ниже:

for c in $(git rev-list --all)
do
   ( git ls-tree -r $c | grep f414f31 ) && echo Found the blob in commit: $c
done

... чтобы показать все коммиты, которые содержат этот BLOB-объект. Если вы хотите знать, в каких ветвях находятся эти коммиты, вы можете сделать:

git branch -a --contains 1a2b3c4d
Другие вопросы по тегам