Как извлечь все удаленные файлы из истории коммитов с Git?

Как можно получить все удаленные файлы из всех коммитов, начиная с самого последнего и до самого первого, включая "потерянные" коммиты после перезаписи истории, в папке с клонированным репозиторием с GitHub?
  • 17 марта 2024 г. 14:49
Ответы на вопрос 2
Для извлечения всех удаленных файлов из истории коммитов с Git, можно воспользоваться следующей командой:

```
git log --diff-filter=D --summary
```

Эта команда выведет список всех удаленных файлов из истории коммитов, а также информацию о коммите, в котором они были удалены.

Если вы хотите получить все удаленные файлы из всех коммитов, начиная с самого последнего и до самого первого, включая "потерянные" коммиты после перезаписи истории, то следует использовать следующий скрипт на bash:

```
git rev-list --all | while read commit; do
    git ls-tree -r --name-only $commit | while read filename; do
        if [ ! -e "$filename" ]; then
            git checkout $commit -- $filename
        fi
    done
done
```

Этот скрипт пройдется по всем коммитам в репозитории, выводит список файлов в каждом коммите и восстанавливает удаленные файлы, если они отсутствуют в текущей версии репозитория.
git log --diff-filter=D --summary | grep delete
Похожие вопросы