Запрос 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