Lihat file di cabang Git yang berbeda tanpa mengubah cabang


620

Apakah mungkin untuk membuka file di cabang git tanpa memeriksa cabang itu? Bagaimana?

Pada dasarnya saya ingin dapat membuka file di cabang halaman github saya tanpa berpindah cabang sepanjang waktu. Saya tidak ingin memodifikasinya, hanya ingin melihatnya.


15
Semua jawaban merindukan fakta Anda perlu menentukan path lengkap file dengan git show: stackoverflow.com/questions/610208/… dan stackoverflow.com/questions/2364147/…
VonC

15
Saat ini, Anda dapat menggunakan git show a1b35:./file.txtuntuk menggunakan jalur relatif.
Steve Bennett

2
@VonC - terima kasih Tuhan atas penyelesaian tab yang sadar cabang :)
Luke

lebih menarik bisa menunjukkan perbedaangit diff <other_branch> <path>
Sławomir Lenart

Contoh file relatif di atas dengan "a1b35", itu adalah nama cabang - jadi tentu saja letakkan nama cabang Anda sendiri di sana.
loneRanger

Jawaban:


876

Ini seharusnya bekerja:

git show branch:file

Di mana cabang dapat berupa ref (cabang, tag, KEPALA, ...) dan file adalah path lengkap file tersebut. Untuk mengekspornya bisa Anda gunakan

git show branch:file > exported_file

Anda juga harus melihat jawaban VonC untuk beberapa pertanyaan terkait:

UPDATE 2015-01-19:

Saat ini Anda dapat menggunakan jalur relatif dengan git show a1b35:./file.txt.


22
Dan Anda juga dapat membuka file dalam vim: git show branch:file | vim -(Perhatikan pipa "|", dan trailing dash setelah perintah vim:vim -
Greg Burghardt

3
@GregBurghardt apa yang berfungsi untuk saya adalah sesuatu yang mirip denganvim -c "set syntax=html" -
raphaëλ

2
Saya berharap saya dapat menjawab pertanyaan ini lebih dari satu kali, jujur.
Vincent Fourmond

2
Ini HANYA menunjukkan cabang lokal, TIDAK menunjukkan semua cabang di server
William Entriken

3
@ FullDecent, saya bisa menggunakan origin/my_remote_branchini dengan baik. Atau maksud Anda versi server yang sebenarnya? Jika Anda menginginkannya, Anda hanya perlu git fetchterlebih dahulu.
rsmith54

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

Anda juga dapat melakukan banyak file dan menggabungkannya:

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

Anda tidak harus memberikan path lengkap ke file, path relatif dapat diterima misalnya:

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

Jika Anda ingin mendapatkan file di direktori lokal (kembalikan hanya satu file) Anda dapat checkout:

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

38

Cara sederhana dan ramah bagi pemula untuk melihat ke dalam file: git gui browser <branch>yang memungkinkan Anda menjelajahi konten file apa pun.

Itu juga ada di menu File git gui. Kebanyakan pembungkus GUI -lebih canggih- lainnya (Qgit, Egit, dll.) Menawarkan penelusuran / pembukaan file juga.


Perintah ini menghasilkan "git: 'gui' bukan perintah git. Lihat 'git --help'. Saya seorang pemula; apa yang terjadi?
Scott Biggs

2
Ini benar-benar berfungsi (mengejutkan saya), lihat git-scm.com/docs/git-gui - Saya menggunakan git versi 2.5.2.windows.1
anhoppe

Jawaban ini sangat membantu! Terima kasih. Harus menyebutkan bahwa saya menggunakan bash git di windows.
merger

Apakah mungkin menggunakan ranger sebagai git gui?
Acgtyrant

1
@ScottBiggs Anda bukan pemula, Anda menggunakan pengaturan tidak standar.
Ashnur

20

Jika Anda menggunakan Emacs, Anda dapat mengetik C-x v ~untuk melihat revisi berbeda dari file yang sedang Anda edit (tag, cabang, dan hash semua pekerjaan).


Apakah ada cara untuk mendapatkan ini di Vim? (Saya terbuka untuk plug-in.)
NHDaly

4

Tambahkan berikut ini ke ~/.gitconfigfile Anda

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

Dan kemudian coba ini

git cat BRANCHNAME FILEPATH

Secara pribadi saya lebih suka parameter terpisah tanpa titik dua. Mengapa? Pilihan ini mencerminkan parameter dari checkoutperintah, yang cenderung saya gunakan lebih sering dan saya merasa lebih mudah untuk mengingatnya daripada parameter showperintah yang dipisahkan dengan titik dua bizarro .


Itu jauh lebih berkesan, terima kasih.
Traveler
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.