Найти и восстановить удаленный файл в репозитории Git - PullRequest
2618 голосов
/ 05 июня 2009

Скажи, что я в Git-репозитории. Я удаляю файл и фиксирую это изменение. Я продолжаю работать и делаю еще коммиты. Затем я обнаружил, что мне нужно восстановить этот файл.

Я знаю, что могу извлечь файл, используя git checkout HEAD^ foo.bar, но я не знаю, когда этот файл был удален.

  1. Какой самый быстрый способ найти коммит, который удалил данное имя файла?
  2. Какой самый простой способ вернуть этот файл в мою рабочую копию?

Я надеюсь, что мне не придется вручную просматривать мои журналы, извлекать весь проект для данного SHA, а затем вручную копировать этот файл в исходную проверку моего проекта.

Ответы [ 22 ]

0 голосов
/ 09 мая 2019

Я знаю, что это старая ветка, но вы всегда можете git revert ваш коммит, который удалил файл. ( Предполагается, что удаление было единственным изменением в коммите. )

> git log 
commit 2994bda49cd97ce49099953fc3f76f7d3c35d1d3
Author: Dave <dave@domain.com>
Date:   Thu May 9 11:11:06 2019 -0700

    deleted readme.md

И если вы продолжили работу и позже поняли, что не хотите фиксировать этот коммит удаления, вы можете отменить его, используя.

> git revert 2994bd

Сейчас git log показывает:

> git log
Author: Dave <dave@domain.com>
Date:   Thu May 9 11:17:41 2019 -0700

    Revert "deleted readme"

    This reverts commit 2994bda49cd97ce49099953fc3f76f7d3c35d1d3.

И readme.md был восстановлен в хранилище.

0 голосов
/ 05 февраля 2018
$ git log --diff-filter=D --summary  | grep "delete" | sort
...