Zeigen Sie eine Datei in einem anderen Git-Zweig an, ohne die Zweige zu ändern


620

Ist es möglich, eine Datei in einem Git-Zweig zu öffnen, ohne diesen Zweig auszuchecken? Wie?

Im Wesentlichen möchte ich in der Lage sein, eine Datei in meinem Github- Seitenzweig zu öffnen, ohne ständig den Zweig zu wechseln. Ich möchte es nicht ändern, sondern nur anzeigen.


15
Bei allen Antworten wurde die Tatsache übersehen, dass Sie den vollständigen Pfad der Datei angeben müssen mit git show: stackoverflow.com/questions/610208/… und stackoverflow.com/questions/2364147/…
VonC

15
Heutzutage können Sie git show a1b35:./file.txtrelative Pfade verwenden.
Steve Bennett

2
@VonC - Gott sei Dank für die verzweigungsbewusste Tab-Vervollständigung :)
Luke

interessanter könnte sein, Unterschiede zu zeigengit diff <other_branch> <path>
Sławomir Lenart

Das obige relative Dateibeispiel mit "a1b35", das ist der Filialname - also geben Sie dort natürlich Ihren eigenen Filialnamen ein.
LoneRanger

Antworten:


876

Das sollte funktionieren:

git show branch:file

Dabei kann der Zweig eine beliebige Referenz sein (Zweig, Tag, HEAD, ...) und die Datei ist der vollständige Pfad der Datei. Zum Exportieren können Sie verwenden

git show branch:file > exported_file

Sie sollten sich auch die Antworten von VonC auf einige verwandte Fragen ansehen :

UPDATE 19.01.2015:

Heutzutage können Sie relative Pfade mit verwenden git show a1b35:./file.txt.


22
Und Sie können die Datei auch in vim öffnen: git show branch:file | vim -(Beachten Sie die "|" - Pipe und den nachgestellten Bindestrich nach dem vim-Befehl:vim -
Greg Burghardt

3
@ GregBurghardt, was für mich funktioniert, ist etwas ähnliches wievim -c "set syntax=html" -
Raphaëλ

2
Ich wünschte, ich könnte diese Antwort mehr als einmal positiv bewerten.
Vincent Fourmond

2
Dies zeigt nur lokale Zweige, es zeigt NICHT alle Zweige auf dem Server
William Entriken

3
@FullDecent, ich konnte gut damit umgehen origin/my_remote_branch. Oder meinst du die eigentliche Serverversion? Wenn Sie das wollen, müssen Sie nur git fetchzuerst.
rsmith54

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

Sie können auch mehrere Dateien erstellen und verketten lassen:

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

Sie müssen nicht den vollständigen Pfad zur Datei angeben. Relative Pfade sind zulässig, z.

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

Wenn Sie die Datei im lokalen Verzeichnis abrufen möchten (nur eine Datei zurücksetzen), können Sie Folgendes auschecken:

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

38

Eine einfache, für Anfänger geeignete Methode zum Durchsuchen einer Datei, mit git gui browser <branch>der Sie den Inhalt jeder Datei untersuchen können.

Es ist auch dort im Menü Datei von git gui. Die meisten anderen - fortgeschritteneren - GUI-Wrapper (Qgit, Egit usw.) bieten auch das Durchsuchen / Öffnen von Dateien an.


Dieser Befehl führt zu "git: 'gui' ist kein git-Befehl. Siehe 'git --help'. Ich bin ein Neuling; was ist los?
Scott Biggs

2
Es funktioniert tatsächlich (zu meiner Überraschung), siehe git-scm.com/docs/git-gui - Ich verwende git Version 2.5.2.windows.1
anhoppe

Diese Antwort war sehr hilfreich! Vielen Dank. Sollte erwähnen, dass ich Git Bash unter Windows verwende.
Fusion

Ist es möglich, Ranger als Git Gui zu verwenden?
Acgtyrant

1
@ScottBiggs Sie sind kein Neuling, Sie verwenden ein nicht standardmäßiges Setup.
Ashnur

20

Wenn Sie Emacs verwenden, können Sie eingeben, C-x v ~um eine andere Revision der Datei anzuzeigen, die Sie gerade bearbeiten (Tags, Zweige und Hashes funktionieren alle).


Gibt es eine Möglichkeit, dies in Vim zu erreichen? (Ich bin offen für Plug-Ins.)
NHDaly

4

Fügen Sie Ihrer ~/.gitconfigDatei Folgendes hinzu

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

Und dann versuchen Sie es

git cat BRANCHNAME FILEPATH

Persönlich bevorzuge ich separate Parameter ohne Doppelpunkt. Warum? Diese Auswahl spiegelt die Parameter des checkoutBefehls wider , die ich häufig verwende, und ich finde es daher viel einfacher, sich daran zu erinnern, als an den bizarren Doppelpunkt-getrennten Parameter des showBefehls.


Das ist so viel unvergesslicher, danke.
Reisender
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.