Git: Как оформить все удаленные файлы за всю историю - PullRequest
1 голос
/ 24 марта 2019

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

1 Ответ

3 голосов
/ 24 марта 2019

В контексте bash * вы можете получить отсортированный список всех удаленных файлов из вашего репо с помощью

git log --all --diff-filter=D --name-only --pretty=format:'' | sort | uniq

, где

--all означает запись всех коммитов, независимо от текущей позиции HEAD

--diff-filter=D отображаемые фильтры фиксируют коммиты по этому условию: «D», что означает «удалено»

--name-only выводит имена файлов

--pretty=format:'' закрывает любой другой вывод, кроме имен файлов

и сформированная команда git возвращает список, который отправляется на

| sort для сортировки списка по алфавиту, а затем

| uniq для сохранения только одного экземпляра для каждой удвоенной строки (иначе файл, удаленный, затем заново созданный, а затем повторно удаленный, появится в списке дважды)


Конечно, вы также можете захотеть ограничить диапазон, чтобы принять во внимание обход истории. Если вам нужны только коммиты, которые были удалены, скажем, из ветки super-feature, добавьте это как <revision range> для журнала (см. doc ), который, если не указан, возвращается к HEAD:

git log --all --diff-filter=D --name-only --pretty=format:'' master..super-feature | sort | uniq

* (например, для систем на основе Linux или для пользователей Windows в GitBash)

...