Comment obtenir une copie d'une version antérieure d'un fichier dans un dépôt git?
J'ai une version d'un .tex
fichier à partir d'un certain nombre de commits ans que j'aimerais obtenir une copie de. J'ai le hash sha1 de la valeur pour le commit qui a la version de ce fichier que je veux. Je ne veux pas remplacer la version actuelle du fichier. Plutôt, je veux juste obtenir une copie distincte de ce que reflète son état à l'ancienne version.
Beaucoup de questions similaires suggèrent d'utiliser git checkout <sha1> -- file.tex
, mais ce ne cesse de donner "erreur: pathspec fichier.tex' ne correspond à aucun fichier(s) connue pour git".
Le dossier, je suis intéressé en existait à l'origine dans le répertoire de niveau supérieur de la logithèque. Je suis actuellement dans un sous-répertoire du référentiel essayez d'exécuter cette commande pour obtenir la version la plus ancienne de fichier.tex dans le sous-répertoire.
Est-ce possible? Comment puis-je faire cela?
- Faire une copie du fichier en cours, puis exécutez
git checkout <commit-id> file.ext
? - Double Possible de Est-il rapide commande Git à voir une ancienne version d'un fichier?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
git cat-file
pour vider le contenu du fichier sur la sortie standard et redirigez vers la destination de votre choix:La
./
est nécessaire si vous êtes dans un sous-répertoire du référentiel, si vous êtes dans le haut-niveau du référentiel, il peut être omis. Aussi, qui peut ne pas fonctionner dans les anciennes versions de git, dans ce cas, vous devez explicitement fournir le chemin complet vers le fichier par rapport à la racine du dépôt..
pour consulter le répertoire en cours. J'ai mis à jour ma réponse pour refléter cela.Je pense que la meilleure solution est de remplacer temporairement votre fichier. Dans votre top-niveau de votre référentiel:
git checkout HEAD file.tex
. La première commande checkout serait de modifier l'index ainsi que l'arbre de travail de copie, de sorte que la caisse sans spécifier de révision permettrait de toujours utiliser la version la plus ancienne.Utilisation
git show
avec les chemins de référentiel absolu:ou des chemins d'accès relatifs au répertoire courant:
Contrairement à la vérification d'un fichier,
show
n'est pas intrinsèquement modifier votre espace de travail, vous pouvez faire ce que vous voulez à la sortie.De crédit à cette réponse, et bien sûr, voir les détails dans le manuel.