Как восстановить весь каталог из истории репозитория git?
Я хотел бы восстановить весь каталог (рекурсивно) из истории моего репозитория git.
есть только 1 ветку (master).
Я знаю фиксацию, где были включены ошибки.
могу ли я использовать хэш sha1 родительского коммита для восстановления состояния каталога, как это было до включения ошибок?
Я думал о чем-то вроде этого:
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 path/to/the/folder/
но это не сработало.
3 ответов:
попробуйте добавить '--' между ревизиями и пути:
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 -- path/to/the/folder/
есть два простых способа сделать это:
если фиксация, которая включала ошибки только включены ошибки, используйте
git revertчтобы инвертировать его эффекты.если нет, то легкий путь таков:
git checkout 348…cp -a path/to/the/folder ../tmp-restore-foldergit checkout HEAD # or whateverrm -rf path/to/the/foldermv ../tmp-restore-folder path/to/the/foldergit add path/to/the/foldergit commit -m "revert …"
Если вы просто сделать
git checkout <SHA-ID>тогда он временно переместит вас к этому sha-commit.каждый коммит объект содержит всю структуру диска в то время, так что если у вас есть файлы, а нужно скопировать их, вы можете сделать это. Предупреждение, однако, вы не будете ни в одной ветке, поэтому вам придется вернуться к master перед копированием файла в свое рабочее дерево и зафиксировать его.
Comments