Je voudrais restaurer un répertoire entier (récursivement) à partir de l'historique de mon dépôt git.
Il n'y a qu'une seule branche (maître).
Je connais le commit où des erreurs ont été incluses.
Puis-je utiliser le hachage sha1 du commit parent pour restaurer l'état du répertoire tel qu'il était avant l'inclusion des erreurs?
J'ai pensé à quelque chose comme ça:
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 path/to/the/folder/
Mais cela n'a pas fonctionné.
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 -- path/to/the/folder/
Réponses:
essayez d'ajouter '-' entre les révisions et les chemins:
Et si vous souhaitez récupérer un répertoire à partir du commit précédent, vous pouvez remplacer le hachage du commit par HEAD ~ 1, par exemple:
la source
rm -Rf path/to/the/folder
alorsgit checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 -- path/to/the/folder/
- Résultat: ce chemin avait exactement les mêmes fichiers que dans ce commit, aucune différence et aucun fichier supplémentaire qui avait été créé après ce commit. C'est ce que je veux.--
?Il existe deux façons simples de procéder:
Si le commit qui incluait les erreurs ne comprenait que les erreurs, utilisez
git revert
pour inverser les effets de celui-ci.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 …"
la source
Si vous le faites simplement,
git checkout <SHA-ID>
cela vous déplacera temporairement vers ce sha-commit.Chaque objet de validation contient la structure entière du disque à ce moment-là, donc si vous avez des fichiers et que vous devez les copier, vous pouvez le faire. Attention cependant, vous ne serez dans aucune branche, vous devrez donc revenir au master avant de copier le fichier dans votre arbre de travail et de le valider.
la source