J'ai un vieux commit que j'ai fait il y a quelques semaines. Je veux restaurer un seul fichier à partir de ce commit. Que fais-je?
git checkout 'master@{7 days ago}' -- path/to/file.txt
Cela ne modifiera pas HEAD, cela écrasera simplement le fichier local path/to/file.txt
Voir man git-rev-parse pour les spécifications de révision possibles (bien sûr, un simple hash (comme dd9bacb
) va bien faire)
N'oubliez pas de valider le changement (après un examen ...)
git checkout [Revision_Key] -- path/to/file
.Je devais restaurer un fichier récent commis dans git. Donc, juste pour réitérer et donner une autre perspective, vous devez le faire en exécutant les deux étapes suivantes:
git log -
Ceci montre les trois derniers commits. Lisez les commentaires et le nom de l'auteur afin de préciser la version exacte souhaitée. Notez cet identifiant de validation long (c.-à-d. B6b94f2c19c456336d60b9409fb1e373036d3d71) pour la version de livraison souhaitée.
git checkout b6b94f2c19c456336d60b9409fb1e373036d3d71 - myfile.Java
Transmettez l'identifiant de validation ET le nom du fichier que vous voulez restaurer. Assurez-vous d'avoir un espace avant et après le double trait d'union.
Il y a beaucoup d'autres façons de le faire. Mais celui-ci est le plus simple dont je puisse me souvenir. J'espère que ça t'as aidé.
REMARQUE: Si vous êtes dans le chemin/dossier de votre projet, il n'est pas nécessaire de taper le chemin d'accès au fichier complet dans la commande de paiement.
Toutes les réponses mentionnent git checkout <tree-ish> -- <pathspec>
. A partir de git v2.23.0, il existe une nouvelle méthode git restore qui est supposée assumer une partie de ce que git checkout
était responsable de. Voir les points saillants des changements sur blog github .
Le comportement par défaut de cette commande est de restaurer l'état d'un arbre de travail avec le contenu provenant du paramètre source
(qui dans votre cas sera un hachage de validation).
En supposant que le hash de commit est abcdef
, la commande devrait ressembler à ceci:
git restore --source=abcdef file_name
qui (par défaut) le met dans l’arbre de travail. Si vous souhaitez mettre la modification directement dans l'index afin qu'elle puisse être immédiatement validée:
git restore --source=abcdef --worktree --staged file_name
ou avec des noms d'option courts:
git restore -s=abcdef -W -S file_name