Первый негитальный ответ.Проверьте историю команд вашей оболочки.Что ж, если вы не использовали оболочку с историей команд, то вы не ...
Ответ git.Обычно вы не можете найти THE $ commit.Как правило, одно и то же содержимое могло быть частью многих коммитов, и я не думаю, что git ведет журнал того, какой отдельный файл вы извлекли (он хранит журнал предыдущих значений HEAD)
Вот грубая ошибкаПринудительный скрипт git-find-by-content.Назовите его с вашим $ filename в качестве параметра, и он покажет вам все коммиты, где этот файл был включен.Как следует из названия, он ищет по содержанию.Так что он найдет файлы с любым именем, если их содержимое совпадает.
#! /bin/sh
tmpdir=/tmp/$(basename $0)
mkdir $tmpdir 2>/dev/null
rm $tmpdir/* 2>/dev/null
hash=$(git hash-object $1)
echo "finding $hash"
allrevs=$(git rev-list --all)
# well, nearly all revs, we could still check the log if we have
# dangling commits and we could include the index to be perfect...
for rev in $allrevs
do
git ls-tree --full-tree -r $rev >$tmpdir/$rev
done
cd $tmpdir
grep $hash *
rm -r $tmpdir
Я не удивлюсь, если найдется более элегантный способ, но это сработало для меня пару раз в подобномситуации.
РЕДАКТИРОВАТЬ: здесь появляется более техническая версия той же проблемы: Какой коммит имеет этот BLOB-объект?