Как восстановить весь каталог из истории репозитория git?



Я хотел бы восстановить весь каталог (рекурсивно) из истории моего репозитория git.



есть только 1 ветку (master).



Я знаю фиксацию, где были включены ошибки.



могу ли я использовать хэш sha1 родительского коммита для восстановления состояния каталога, как это было до включения ошибок?



Я думал о чем-то вроде этого:



git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 path/to/the/folder/


но это не сработало.

477   3  
git

3 ответов:

попробуйте добавить '--' между ревизиями и пути:

git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 -- path/to/the/folder/ 

есть два простых способа сделать это:

если фиксация, которая включала ошибки только включены ошибки, используйте git revert чтобы инвертировать его эффекты.

если нет, то легкий путь таков:

  1. git checkout 348…
  2. cp -a path/to/the/folder ../tmp-restore-folder
  3. git checkout HEAD # or whatever
  4. rm -rf path/to/the/folder
  5. mv ../tmp-restore-folder path/to/the/folder
  6. git add path/to/the/folder
  7. git commit -m "revert …"

Если вы просто сделать git checkout <SHA-ID> тогда он временно переместит вас к этому sha-commit.

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

Comments

    Ничего не найдено.