Visualizza un file in un altro ramo Git senza cambiare i rami


620

È possibile aprire un file in un ramo git senza estrarlo? Come?

In sostanza, voglio essere in grado di aprire un file nel mio ramo di pagine github senza cambiare i rami tutto il tempo. Non voglio modificarlo, voglio solo vederlo.


15
Tutte le risposte mancate il fatto è necessario specificare il percorso completo del file con git show: stackoverflow.com/questions/610208/... e stackoverflow.com/questions/2364147/...
VonC

15
In questi giorni, è possibile utilizzare git show a1b35:./file.txtper utilizzare percorsi relativi.
Steve Bennett,

2
@VonC - meno male per il completamento della scheda consapevole del ramo :)
Luca,

più interessante potrebbe mostrare differenzegit diff <other_branch> <path>
Sławomir Lenart,

L'esempio di file relativo sopra con "a1b35", che è il nome del ramo - quindi ovviamente inserisci il tuo nome di ramo lì.
loneRanger

Risposte:


877

Questo dovrebbe funzionare:

git show branch:file

Dove branch può essere qualsiasi ref (branch, tag, HEAD, ...) e il file è il percorso completo del file. Per esportarlo potresti usare

git show branch:file > exported_file

Dovresti anche guardare le risposte di VonC ad alcune domande correlate:

AGGIORNAMENTO 2015-01-19:

Oggi è possibile utilizzare percorsi relativi con git show a1b35:./file.txt.


22
E puoi anche aprire il file in vim: git show branch:file | vim -(Nota la pipe "|" e il trattino finale dopo il comando vim:vim -
Greg Burghardt,

3
@GregBurghardt ciò che funziona per me è qualcosa di simile avim -c "set syntax=html" -
raphaëλ

2
Vorrei poter votare questa risposta più di una volta, onestamente.
Vincent Fourmond,

2
Questo mostra SOLO le filiali locali, NON mostra tutte le filiali sul server
William Entriken,

3
@ FullDecent, sono stato in grado di utilizzare origin/my_remote_branchbene con questo. O intendi l'attuale versione del server? Se lo vuoi, devi solo git fetchprima.
rsmith54,

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

puoi anche fare più file e farli concatenare:

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

Non è necessario fornire il percorso completo del file, i percorsi relativi sono accettabili, ad esempio:

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

Se vuoi ottenere il file nella directory locale (ripristina solo un file) puoi effettuare il checkout:

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

38

Un modo semplice e intuitivo per esaminare un file: git gui browser <branch>che consente di esplorare il contenuto di qualsiasi file.

È anche presente nel menu File di git gui. La maggior parte degli altri wrapper (più avanzati) della GUI (Qgit, Egit, ecc.) Offre anche la navigazione / apertura di file.


Questo comando risulta "git: 'gui' non è un comando git. Vedi 'git --help'. Sono un novizio; che sta succedendo?
Scott Biggs,

2
Funziona davvero (con mia sorpresa), vedi git-scm.com/docs/git-gui - Uso git versione 2.5.2.windows.1
anhoppe

Questa risposta è stata molto utile! Grazie. Dovrei menzionare che sto usando Git Bash su Windows.
fusione

È possibile usare ranger come git gui?
acgtyrant,

1
@ScottBiggs non sei un principiante, stai utilizzando un'installazione non standard.
Ashnur,

20

Se stai usando Emacs, puoi digitare C-x v ~per vedere una diversa revisione del file che stai modificando (tag, rami e hash funzionano tutti).


C'è un modo per ottenere questo in Vim? (Sono aperto ai plug-in.)
NHDaly

4

Aggiungi quanto segue al tuo ~/.gitconfigfile

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

E poi prova questo

git cat BRANCHNAME FILEPATH

Personalmente preferisco parametri separati senza due punti. Perché? Questa scelta rispecchia i parametri del checkoutcomando, che tendo a usare piuttosto frequentemente e lo trovo molto più facile da ricordare rispetto al bizzarro parametro separato da due punti del showcomando.


È molto più memorabile, grazie.
Viaggiatore
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.