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:
git checkout 348…
cp -a path/to/the/folder ../tmp-restore-folder
git checkout HEAD # or whatever
rm -rf path/to/the/folder
mv ../tmp-restore-folder path/to/the/folder
git add path/to/the/folder
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.