Question Y at-il une commande git rapide pour voir une ancienne version d'un fichier?


Y at-il une commande dans git à voir (soit déversé sur stdout, ou dans $PAGER ou $EDITOR) une version particulière d'un fichier particulier?


1191
2017-12-03 19:31


origine


Réponses:


Vous pouvez utiliser git show:

$ git show REVISION:path/to/file

Remplacez REVISION par votre révision actuelle (peut être un commit Git SHA, un nom de tag, un nom de branche, un nom de commit relatif ou tout autre moyen d'identifier un commit dans Git)

Par exemple, pour afficher la version du fichier src/main.c à partir de 4 heures, utilisez:

$ git show HEAD~4:src/main.c

Notez que le chemin provient de la racine du référentiel sauf s'il commence par ./ ​​ou ../ pour indiquer un chemin relatif. Pour plus d'informations, consultez la page de manuel pour git-show.


1330
2017-12-03 19:46



Faire cela par date ressemble à ceci:

git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt

Notez que HEAD@{2013-02-25} signifie "où HEAD était le 2013-02-25" dans ce référentiel (en utilisant le reflog), pas "le dernier engagement avant 2013-02-25 dans cette branche de l'histoire".


208
2018-03-07 17:05



Si vous aimez les interfaces graphiques, vous pouvez utiliser gitk:

  1. commencez gitk avec:

    gitk /path/to/file
    
  2. Choisissez la révision dans la partie supérieure de l'écran, par ex. par description ou date. Par défaut, la partie inférieure de l'écran affiche le diff pour cette révision (correspondant au bouton radio "patch").

  3. Pour voir le fichier de la révision sélectionnée:

    • Cliquez sur le bouton radio "arbre". Cela montrera la racine de l'arbre de fichier à cette révision.
    • Explorez votre dossier.

98
2017-12-19 18:21



Vous pouvez également spécifier un commit hash (souvent aussi appelé commit ID) avec le git show commander.


En un mot

git show <commitHash>:/path/to/file


Pas à pas

  1. Afficher le journal de toutes les modifications pour un fichier donné avec git log /path/to/file
  2. Dans la liste des modifications affichées, il montre commit hash tel que commit 06c98... (06c98 ... étant le hash de commit)
  3. Copiez le commit hash
  4. Exécuter la commande git show <commitHash>:/path/to/file en utilisant le commit hashde l'étape 3 & path/to/file de l'étape 1.

Remarque: ajouter le ./ lorsque spécifier un chemin relatif semble important, c'est-à-dire git show b2f8be577166577c59b55e11cfff1404baf63a84:./flight-simulation/src/main/components/nav-horiz.html.


70
2017-11-03 11:21



En plus de Jim HunzikerLa réponse,

vous pouvez exporter le fichier de la révision en tant que,

git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt > old_fileInCurrentDirectory.txt

J'espère que cela t'aides :)


29
2018-04-30 05:07



git log -p vous montrera non seulement les logs de commit mais aussi le diff de chaque commit (sauf les commits de fusion). Ensuite, vous pouvez appuyer sur /, entrez le nom de fichier et appuyez sur enter. presse n ou p pour aller à l'occurrence suivante / précédente. De cette façon, vous ne verrez pas seulement les changements dans le fichier mais aussi les informations de validation.


13
2018-05-06 20:02



Vous pouvez utiliser un script comme celui-ci pour vider toutes les versions d'un fichier dans des fichiers séparés:

par exemple.

git_dump_all_versions_of_a_file.sh path/to/somefile.txt

Obtenir le script ici comme une réponse à une autre question similaire


2
2017-10-30 17:01