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.

Schneems
la source
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.

Scolytus
la source
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
Adam Dymitruk
la source
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.

en colère
la source
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).

legoscia
la source
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.

akuhn
la source
C'est tellement plus mémorable, merci.
Voyageur