Comment faire pour restaurer un répertoire entier de l'histoire du dépôt git?
Je voudrais remettre un dossier complet (de manière récursive) de l'histoire de mon dépôt git.
Il est à seulement 1 branche (master).
Je sais que le commit où des erreurs ont été inclus.
Puis-je utiliser le hash sha1 de la société mère s'engager à restaurer l'état du répertoire qu'il a été avant que les erreurs ont été inclus?
J'ai pensé à quelque chose comme ceci:
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 path/to/the/folder/
mais il ne fonctionne pas.
- essayez d'ajouter '--' entre les révisions et les chemins d'accès:
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 -- path/to/the/folder/
- cela a aidé. je vous remercie beaucoup.
- Écrire que comme une vraie réponse et de recueillir vos 15 points avant que quelqu'un d'autre s'en occupe 😉
- Je n'étais pas sûr que cela serait, donc j'ai fait un commentaire, juste pour vérifier. Maintenant que je suis sûr qu'il fonctionne, je l'ai écrit comme réponse 🙂
- Comme une astuce générale, "il n'a pas de travail" n'est pas très utile. Dites-nous pourquoi il n'a pas de travail, idéalement avec la sortie d'erreur (paré si c'est très long).
- vous avez raison, merci pour vos commentaires. la prochaine fois je vais ajouter un peu plus d'informations!
Vous devez vous connecter pour publier un commentaire.
essayez d'ajouter '--' entre les révisions et les chemins d'accès:
rm -Rf path/to/the/folder
puisgit checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 -- path/to/the/folder/
- Résultat: que de chemin a exactement les mêmes fichiers que dans ce commit, pas de différences, et pas de supplément de fichiers qui ont été créés après cette validation. Qui est ce que je veux.git checkout HEAD -- path/to/the/folder/
--
faire?Il y a deux façons de le faire:
Si le commit qui inclus les erreurs seulement inclus les erreurs, utiliser
git revert
pour inverser les effets.Si pas, le chemin d'accès facile est: est-ce
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 n'avez tout simplement
git checkout <SHA-ID>
puis il va se déplacer temporairement vous que sha-commit.Chaque objet commit détient l'ensemble de la structure du disque à l'époque, donc si vous avez des fichiers et copiez-les, vous pouvez le faire. Mais attention, vous ne serez pas dans n'importe quelle branche, de sorte que vous aurez à revenir à maîtriser avant de copier le fichier dans votre dossier de travail de l'arbre et de le valider.