Afficher un fichier dans une autre branche Git sans changer de branche


620

Est-il possible d'ouvrir un fichier dans une branche git sans vérifier cette branche? Comment?

Essentiellement, je veux pouvoir ouvrir un fichier dans ma branche de pages github sans changer de branche tout le temps. Je ne veux pas le modifier, je veux juste le voir.


15
Toutes les réponses ont manqué le fait que vous devez spécifier le chemin complet du fichier avec git show: stackoverflow.com/questions/610208/… et stackoverflow.com/questions/2364147/…
VonC

15
De nos jours, vous pouvez utiliser git show a1b35:./file.txtpour utiliser des chemins relatifs.
Steve Bennett

2
@VonC - Dieu merci pour la complétion de l'onglet sensible à la branche :)
Luke

plus intéressant pourrait être de montrer des différencesgit diff <other_branch> <path>
Sławomir Lenart

L'exemple de fichier relatif ci-dessus avec "a1b35", c'est le nom de la branche - alors bien sûr, mettez votre propre nom de branche là-bas.
loneRanger

Réponses:


877

Cela devrait fonctionner:

git show branch:file

branche peut être n'importe quelle référence (branche, tag, HEAD, ...) et fichier est le chemin complet du fichier. Pour l'exporter, vous pouvez utiliser

git show branch:file > exported_file

Vous devriez également consulter les réponses de VonC à certaines questions connexes:

MISE À JOUR 2015-01-19:

De nos jours, vous pouvez utiliser des chemins relatifs avec git show a1b35:./file.txt.


22
Et vous pouvez également ouvrir le fichier dans vim: git show branch:file | vim -(Remarquez le tuyau "|" et le tiret arrière après la commande vim:vim -
Greg Burghardt

3
@GregBurghardt ce qui fonctionne pour moi est quelque chose de similaire àvim -c "set syntax=html" -
raphaëλ

2
J'aimerais pouvoir voter cette réponse plus d'une fois, honnêtement.
Vincent Fourmond

2
Cela montre UNIQUEMENT les succursales locales, il ne montre PAS toutes les succursales sur le serveur
William Entriken

3
@FullDecent, j'ai pu utiliser très origin/my_remote_branchbien avec cela. Ou voulez-vous dire la version réelle du serveur? Si vous le souhaitez, vous devez d' git fetchabord le faire.
rsmith54

53
git show somebranch:path/to/your/file

vous pouvez également créer plusieurs fichiers et les concaténer:

git show branchA~10:fileA branchB^^:fileB

Vous n'avez pas à fournir le chemin complet du fichier, les chemins relatifs sont acceptables, par exemple:

git show branchA~10:../src/hello.c

Si vous souhaitez obtenir le fichier dans le répertoire local (rétablir un seul fichier), vous pouvez commander:

git checkout somebranch^^^ -- path/to/file

38

Une manière simple et conviviale pour les débutants de consulter un fichier: git gui browser <branch>qui vous permet d'explorer le contenu de n'importe quel fichier.

Il est également présent dans le menu Fichier de git gui. La plupart des autres wrappers GUI (plus avancés) (Qgit, Egit, etc.) offrent également la navigation / ouverture de fichiers.


Cette commande génère "git: 'gui' n'est pas une commande git. Voir 'git --help'. Je suis un débutant; que se passe-t
Scott Biggs

2
Cela fonctionne réellement (à ma grande surprise), voir git-scm.com/docs/git-gui - J'utilise la version 2.5.2.windows.1 de git
anhoppe

Cette réponse a été très utile! Merci. Devrait mentionner que j'utilise git bash sur Windows.
fusion

Est-il possible d'utiliser ranger comme git gui?
acgtyrant

1
@ScottBiggs vous n'êtes pas un débutant, vous utilisez une configuration non standard.
Ashnur

20

Si vous utilisez Emacs, vous pouvez taper C-x v ~pour voir une révision différente du fichier que vous éditez actuellement (les balises, les branches et les hachages fonctionnent tous).


Y a-t-il un moyen d'obtenir cela à Vim? (Je suis ouvert aux plug-ins.)
NHDaly

4

Ajoutez ce qui suit à votre ~/.gitconfigfichier

[alias]
  cat = "!git show \"$1:$2\" #"

Et puis essayez ceci

git cat BRANCHNAME FILEPATH

Personnellement, je préfère des paramètres séparés sans deux points. Pourquoi? Ce choix reflète les paramètres de la checkoutcommande, que j'ai tendance à utiliser assez fréquemment et je le trouve donc beaucoup plus facile à mémoriser que le paramètre bizarro séparé par deux-points de la showcommande.


C'est tellement plus mémorable, merci.
Voyageur
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.