Wyświetl plik w innej gałęzi Git bez zmiany gałęzi

620

Czy można otworzyć plik w gałęzi git bez sprawdzania tej gałęzi? W jaki sposób?

Zasadniczo chcę mieć możliwość otwierania pliku w gałęzi stron github bez ciągłego przełączania gałęzi. Nie chcę go modyfikować, chcę go tylko wyświetlić.

Schneems
źródło
15
Wszystkie odpowiedzi pominęły fakt, że musisz podać pełną ścieżkę do pliku za pomocą git show: stackoverflow.com/questions/610208/... i stackoverflow.com/questions/2364147/...
VonC
15
Obecnie możesz używać git show a1b35:./file.txtścieżek względnych.
Steve Bennett,
2
@VonC - dzięki Bogu za wypełnianie kart świadomych gałęzi :)
Łukasz
bardziej interesujące mogą być pokazywanie różnicgit diff <other_branch> <path>
Sławomir Lenart
Względny przykład pliku powyżej z „a1b35”, czyli nazwą oddziału - więc oczywiście umieść tam własną nazwę oddziału.
loneRanger

Odpowiedzi:

876

To powinno działać:

git show branch:file

Gdzie gałąź może być dowolnym ref (gałąź, tag, HEAD, ...), a plik jest pełną ścieżką do pliku. Aby go wyeksportować, możesz użyć

git show branch:file > exported_file

Powinieneś także spojrzeć na odpowiedzi VonC na niektóre powiązane pytania:

AKTUALIZACJA 19.01.2015:

Obecnie możesz używać ścieżek względnych git show a1b35:./file.txt.

Scolytus
źródło
22
Możesz także otworzyć plik w vimie: git show branch:file | vim -(Zwróć uwagę na potok "|" i końcowy myślnik po poleceniu vim:vim -
Greg Burghardt
3
@GregBurghardt działa dla mnie coś podobnego dovim -c "set syntax=html" -
raphaëλ
2
Szczerze, chciałbym głosować nad odpowiedzią więcej niż raz.
Vincent Fourmond,
2
Pokazuje TYLKO lokalne oddziały, NIE pokazuje wszystkich oddziałów na serwerze
William Entriken
3
@FullDecent, mogłem origin/my_remote_branchz tym dobrze korzystać . Czy masz na myśli rzeczywistą wersję serwera? Jeśli tego chcesz, musisz git fetchnajpierw.
rsmith54
53
git show somebranch:path/to/your/file

możesz także zrobić wiele plików i połączyć je:

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

Nie musisz podawać pełnej ścieżki do pliku, ścieżki względne są dopuszczalne, np .:

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

Jeśli chcesz pobrać plik do katalogu lokalnego (przywróć tylko jeden plik), możesz:

git checkout somebranch^^^ -- path/to/file
Adam Dymitruk
źródło
38

Prosty, przyjazny dla początkujących sposób przeglądania pliku: git gui browser <branch>który pozwala eksplorować zawartość dowolnego pliku.

Jest tam również w menu Plik git gui. Większość innych - bardziej zaawansowanych - opakowań GUI (Qgit, Egit itp.) Oferuje również przeglądanie / otwieranie plików.

Inger
źródło
To polecenie powoduje, że „git:„ gui ”nie jest poleceniem git. Zobacz„ git --help ”. Jestem nowicjuszem; co się dzieje?
Scott Biggs
2
Działa (ku mojemu zdziwieniu), patrz git-scm.com/docs/git-gui - używam gita w wersji 2.5.2.windows.1
anhoppe
Ta odpowiedź była bardzo pomocna! Dzięki. Powinienem wspomnieć, że używam git bash na Windowsie.
fuzja
Czy można używać Rangera jako git gui?
acgtyrant
1
@ScottBiggs nie jesteś nowicjuszem, używasz niestandardowej konfiguracji.
Ashnur
20

Jeśli używasz Emacsa, możesz wpisać, C-x v ~aby zobaczyć inną wersję aktualnie edytowanego pliku (tagi, rozgałęzienia i skróty działają).

legoscia
źródło
Czy jest sposób na uzyskanie tego w Vimie? (Jestem otwarty na wtyczki).
NHDaly
4

Dodaj następujące elementy do swojego ~/.gitconfigpliku

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

A potem spróbuj tego

git cat BRANCHNAME FILEPATH

Osobiście wolę osobne parametry bez dwukropka. Dlaczego? Ten wybór odzwierciedla parametry checkoutpolecenia, którego zwykle używam dość często i dlatego łatwiej mi je zapamiętać niż parametr showpolecenia oddzielony dwukropkami .

akuhn
źródło
Dzięki temu jest o wiele bardziej niezapomniany.
Podróżnik