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ć.


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.


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

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.


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ą).


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 .


Dzięki temu jest o wiele bardziej niezapomniany.
Podróżnik
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.