Pour compléter votre propre réponse, la syntaxe est en effet
git show object
git show $REV:$FILE
git show somebranch:from/the/root/myfile.txt
git show HEAD^^^:test/test.py
La commande prend le style de révision habituel, ce qui signifie que vous pouvez utiliser l'une des méthodes suivantes:
- nom de la branche (comme suggéré par ash )
HEAD
+ x nombre de ^
caractères
- Le hachage SHA1 d'une révision donnée
- Les premiers (peut-être 5) caractères d'un hachage SHA1 donné
Astuce Il est important de se rappeler que lorsque vous utilisez " git show
", spécifiez toujours un chemin à partir de la racine du référentiel , pas votre position actuelle dans le répertoire.
(Bien que Mike Morearty mentionne que, au moins avec git 1.7.5.4, vous pouvez spécifier un chemin relatif en mettant " ./
" au début du chemin - par exemple:
git show HEAD^^:./test.py
)
Avec Git 2.23+ (août 2019), vous pouvez également utiliser git restore
ce qui remplace la git checkout
commande confuse
git restore -s <SHA1> -- afile
git restore -s somebranch -- afile
Cela ne restaurerait dans l'arborescence de travail que le fichier tel qu'il est présent dans la branche "source" ( -s
) de validation SHA1 somebranch
.
Pour restaurer également l'index:
git restore -s <SHA1> -SW -- afile
( -SW
: abréviation de --staged --worktree
)
Avant git1.5.x, cela se faisait avec de la plomberie:
git ls-tree <rev>
afficher une liste d'un ou plusieurs objets "blob" dans une validation
git cat-file blob <file-SHA1>
cat un fichier car il a été validé dans une révision spécifique (similaire à svn cat). utilisez git ls-tree pour récupérer la valeur d'un fichier-sha1 donné
git cat-file -p $(git-ls-tree $REV $file | cut -d " " -f 3 | cut -f 1)::
git-ls-tree répertorie l'ID d'objet pour $ file dans la révision $ REV, il est coupé de la sortie et utilisé comme argument pour git-cat-file, qui devrait vraiment être appelé git-cat-object, et simplement les dumps cet objet à stdout.
Remarque: depuis Git 2.11 (Q4 2016), vous pouvez appliquer un filtre de contenu à la git cat-file
sortie!
Voir commit 3214594 , commit 7bcf341 (09 sept. 2016), commit 7bcf341 (09 sept. 2016) et commit b9e62f6 , commit 16dcc29 (24 août 2016) par Johannes Schindelin ( dscho
) .
(Fusionné par Junio C Hamano - gitster
- en commit 7889ed2 , 21 sept. 2016)
cat-file
: support --textconv
/ --filters
en mode batch
Même si " git hash-objects
", qui est un outil pour prendre un flux de données sur un système de fichiers et le placer dans le magasin d'objets Git, a permis d'effectuer les conversions "du monde extérieur vers Git" (par exemple, les conversions de fin de ligne et l'application du filtre propre), et il avait la fonction activée par défaut dès les premiers jours, son fonctionnement inverse " git cat-file
", qui prend un objet de la boutique d'objets Git et l'extériorise pour la consommation par le monde extérieur, manquait d'un mécanisme équivalent pour exécuter le "Git-to-outside-world"
git config diff.txt.textconv "tr A-Za-z N-ZA-Mn-za-m <"
git cat-file --textconv --batch
Remarque: " git cat-file --textconv
" a commencé à segfaulting récemment (2017), qui a été corrigé dans Git 2.15 (Q4 2017)
Voir commit cc0ea7c (21 sept. 2017) de Jeff King ( peff
) .
(Fusionné par Junio C Hamano - gitster
- dans commit bfbc2fc , 28 sept. 2017)
Notez que pour remplacer / remplacer un fichier par un contenu passé, vous ne devez plus utiliser la commande confusegit checkout
, mais git restore
(Git 2.23+, août 2019)
git restore -s <SHA1> -- afile
Cela ne restaurerait sur l'arborescence de travail que le fichier présent dans le -s
commit "source" ( ) SHA1.
Pour restaurer également l'index:
git restore -s <SHA1> -SW -- afile
( -SW
: abréviation de --staged --worktree
)
git show
(sans aide) utilise une syntaxe différente avec deux points.git show 2c7cf:my_file.txt