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