Şubeleri değiştirmeden farklı bir Git dalındaki dosyayı görüntüleme


620

Git şubesinde bir dosyayı bu şubeye bakmadan açmak mümkün müdür? Nasıl?

Esasen github sayfaları şubemde sürekli şube değiştirmeden bir dosya açabilmek istiyorum . Değiştirmek istemiyorum, sadece görüntülemek istiyorum.


15
Tüm yanıtlar, dosyanın tam yolunu belirtmeniz gereken gerçeği kaçırdı git show: stackoverflow.com/questions/610208/… ve stackoverflow.com/questions/2364147/…
VonC

15
Bu günlerde, git show a1b35:./file.txtgöreli yolları kullanmak için kullanabilirsiniz.
Steve Bennett

2
@VonC - Şube farkında sekme tamamlama için çok şükür :)
Luke

daha ilginç farklılıklar gösterebilirgit diff <other_branch> <path>
Sławomir Lenart

Yukarıdaki "a1b35" ile göreli dosya örneği, bu da şube adıdır - bu yüzden elbette kendi şube adınızı oraya koyun.
loneRanger

Yanıtlar:


876

Bu çalışmalı:

git show branch:file

Burada şube herhangi bir ref (şube, etiket, HEAD, ...) olabilir ve dosya dosyanın tam yoludur. Dışa aktarmak için şunları kullanabilirsiniz:

git show branch:file > exported_file

Ayrıca, VonC'nin ilgili bazı soruların cevaplarına da bakmalısınız :

GÜNCELLEME 2015-01-19:

Günümüzde göreli yolları kullanabilirsiniz git show a1b35:./file.txt.


22
Ve siz de vim dosya açıyorlar pop: git show branch:file | vim -(Bildirimi "|" boru ve vim komutundan sonra sonunda dash:vim -
Greg Burghardt

3
@GregBurghardt benim için ne işe yarıyorvim -c "set syntax=html" -
raphaëλ

2
Keşke bu cevabı bir kereden fazla dürüstçe dile getirebilseydim.
Vincent Fourmond

2
Bu SADECE yerel şubeleri gösterir, sunucudaki tüm şubeleri
GÖSTERMEZ

3
@FullDecent, bununla origin/my_remote_branchiyi kullanabildim . Yoksa gerçek sunucu sürümü mü demek istediniz? Bunu istiyorsanız, önce yapmanız gerekir git fetch.
rsmith54

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

ayrıca birden fazla dosya yapabilir ve bunları birleştirebilirsiniz:

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

Dosyanın tam yolunu sağlamanız gerekmez, göreli yollar kabul edilebilir örn:

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

Dosyayı yerel dizine almak istiyorsanız (yalnızca bir dosya geri alın) ödeme yapabilirsiniz:

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

38

Bir dosyaya bakmanın basit, acemi dostu bir yol: git gui browser <branch>herhangi bir dosyanın içeriğini keşfetmenizi sağlar.

Ayrıca Dosya menüsünde git gui. Diğer -daha gelişmiş- GUI paketleyicileri (Qgit, Egit, vb.) Dosyalara göz atma / açma da sunar.


Bu komut sonuçları "git: 'gui'nin' bir git komutu 'git --help' Bkz değil ben bir acemi değilim; ne oluyor..?
Scott Biggs

2
Aslında (sürprizime göre) çalışıyor, bkz. Git-scm.com/docs/git-gui - Git versiyonunu kullanıyorum 2.5.2.windows.1
anhoppe

Bu cevap çok yardımcı oldu! Teşekkürler. Windows üzerinde git bash kullanarak im bahsetmeliyiz.
birleşme

Ranger'ı git gui olarak kullanmak mümkün mü?
acgtyrant

1
@ScottBiggs bir acemi değilsiniz, standart olmayan bir kurulum kullanıyorsunuz.
Aşnur

20

Emacs kullanıyorsanız, C-x v ~şu anda düzenlemekte olduğunuz dosyanın farklı bir düzeltmesini görmek için yazabilirsiniz (etiketler, dallar ve karmaların tümü çalışır).


Bunu Vim'de almanın bir yolu var mı? (Eklentilere
açıkım

4

~/.gitconfigDosyanıza aşağıdakileri ekleyin

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

Ve sonra bunu dene

git cat BRANCHNAME FILEPATH

Şahsen iki nokta üst üste olmadan ayrı parametreleri tercih ederim. Neden? Bu seçim checkout, oldukça sık kullanma eğiliminde olduğum komutun parametrelerini yansıtır ve bu nedenle hatırlanması showkomutun tuhaf iki nokta üst üste ayrılmış parametresinden daha kolay buluyorum .


Bu çok daha akılda kalıcı, teşekkürler.
Gezgin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.