Запрос git reflog для всех коммитов в конкретном файле

Можно ли проверить git reflog для всех коммитов в конкретном файле.

Я сделал коммит в файл foo.txt, и теперь он больше не отображается в истории git через

git log foo.txt

Я хочу выполнить поиск в журнале, чтобы найти все коммиты в этом файле, чтобы найти свой "потерянный" коммит.

3 ответа

Решение

Пытаться:

git rev-list --all -- foo.txt

Это даст вам список всех коммитов, содержащих foo.txt.

Наткнулся на это во время поиска ответа, который прост: git reflog $PATH, который будет включать исправления и другие действия, которые не будут видны в противном случае (хотя остерегайтесь, reflog будет удален gc)

Я бы использовал:

git rev-list --all --remotes --pretty=oneline foo.txt

Опция --remotes позволяет вам также использовать пульты, а --pretty=oneline заставляет отображать также сообщение о коммите. Очень полезно, когда вы ищете модификацию, переданную удаленно в ветку, имя которой вы не знаете.

Я потерял изменение, когда очищал свою историю с помощью rebase. Я использовал что-то вроде этого для поиска рефлогов:

for r in $(git reflog -- ${file} | cut -d ' ' -f1); do git show ${r}:${file}; done
Другие вопросы по тегам