Comment restaurer tout un répertoire depuis l’historique du repository git?

Je voudrais restaurer un répertoire entier (récursivement) à partir de l’historique de mon repository git.

Il n’y a qu’une seule twig (master).

Je connais le commit où les erreurs étaient incluses.

Puis-je utiliser le hash sha1 du parent pour restaurer l’état du répertoire tel qu’il était avant que les erreurs ne soient incluses?

J’ai pensé à quelque chose comme ça:

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

Mais cela n’a pas fonctionné.

essayez d’append ‘-‘ entre les révisions et les chemins:

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

Il y a deux manières faciles de faire ceci:

Si le commit contenant les erreurs ne comprenait que les erreurs, utilisez git revert pour en inverser les effets.

Sinon, le chemin facile est le suivant:

  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 …"

Si vous effectuez simplement une git checkout cela vous déplacera temporairement vers ce sha-commit.

Chaque object de validation contient toute la structure du disque à ce moment-là. Si vous avez des fichiers là-bas et que vous devez les copier, vous pouvez le faire. Attention cependant, vous ne serez dans aucune twig, vous devrez donc revenir en maître avant de copier le fichier dans votre arbre de travail et de le valider.