Untuk melengkapi jawaban Anda sendiri, sintaksnya memang
git show object
git show $REV:$FILE
git show somebranch:from/the/root/myfile.txt
git show HEAD^^^:test/test.py
Perintah ini menggunakan gaya revisi yang biasa, artinya Anda dapat menggunakan salah satu dari yang berikut ini:
- nama cabang (seperti yang disarankan oleh ash )
HEAD
+ x jumlah ^
karakter
- Hash SHA1 dari revisi yang diberikan
- Beberapa (mungkin 5) karakter pertama dari hash SHA1 yang diberikan
Tip Penting untuk diingat bahwa ketika menggunakan " git show
", selalu tentukan path dari root repositori , bukan posisi direktori Anda saat ini.
(Meskipun Mike Morearty menyebutkan bahwa, setidaknya dengan git 1.7.5.4, Anda dapat menentukan jalur relatif dengan meletakkan " ./
" di awal jalur - misalnya:
git show HEAD^^:./test.py
)
Dengan Git 2.23+ (Agustus 2019), Anda juga dapat menggunakan perintahgit restore
pengganti yang membingungkangit checkout
git restore -s <SHA1> -- afile
git restore -s somebranch -- afile
Itu akan mengembalikan pada pohon yang bekerja hanya file yang ada di "source" ( -s
) commit SHA1 atau cabang somebranch
.
Untuk mengembalikan juga indeks:
git restore -s <SHA1> -SW -- afile
( -SW
: kependekan dari --staged --worktree
)
Sebelum git1.5.x, itu dilakukan dengan beberapa pipa ledeng:
git ls-tree <rev>
perlihatkan daftar satu atau lebih objek 'gumpalan' di dalam komit
git cat-file blob <file-SHA1>
cat file seperti yang telah dilakukan dalam revisi tertentu (mirip dengan svn cat). gunakan git ls-tree untuk mengambil nilai file-sha1 yang diberikan
git cat-file -p $(git-ls-tree $REV $file | cut -d " " -f 3 | cut -f 1)::
git-ls-tree mencantumkan ID objek untuk $ file dalam revisi $ REV, ini dipotong dari output dan digunakan sebagai argumen untuk git-cat-file, yang seharusnya benar-benar disebut git-cat-objek, dan hanya membuang objek itu ke stdout.
Catatan: sejak Git 2.11 (Q4 2016), Anda dapat menerapkan filter konten ke git cat-file
output!
Lihat komit 3214594 , komit 7bcf341 (09 Sep 2016), komit 7bcf341 (09 Sep 2016), dan komi b9e62f6 , komit 16dcc29 (24 Agu 2016) oleh Johannes Schindelin ( dscho
) .
(Digabung oleh Junio C Hamano - gitster
- dalam komit 7889ed2 , 21 Sep 2016)
cat-file
: dukungan --textconv
/ --filters
dalam mode batch
Meskipun " git hash-objects
", yang merupakan alat untuk mengambil aliran data sistem file dan memasukkannya ke toko objek Git, diizinkan untuk melakukan konversi "luar-dunia-ke-Git" (mis. Konversi dan aplikasi akhir-line dari clean-filter), dan memiliki fitur aktif secara default sejak awal, " git cat-file
" operasi terbalik , yang mengambil objek dari penyimpanan objek Git dan mengeksternalisasi untuk konsumsi oleh dunia luar, tidak memiliki mekanisme yang setara untuk jalankan "Git-to-outside-world"
git config diff.txt.textconv "tr A-Za-z N-ZA-Mn-za-m <"
git cat-file --textconv --batch
Catatan: " git cat-file --textconv
" mulai melakukan segmentasi baru-baru ini (2017), yang telah diperbaiki di Git 2.15 (Q4 2017)
Lihat komit cc0ea7c (21 Sep 2017) oleh Jeff King ( peff
) .
(Digabung oleh Junio C Hamano - gitster
- di commit bfbc2fc , 28 Sep 2017)
Perhatikan bahwa untuk mengganti / mengganti file dengan konten yang lalu, Anda seharusnya tidak menggunakan perintah yang membingungkangit checkout
lagi, tetapi git restore
(Git 2.23+, Agustus 2019)
git restore -s <SHA1> -- afile
Itu akan mengembalikan pada pohon yang bekerja hanya file yang ada di "source" ( -s
) commit SHA1.
Untuk mengembalikan juga indeks:
git restore -s <SHA1> -SW -- afile
( -SW
: kependekan dari --staged --worktree
)
git show
(tidak membantu) menggunakan sintaks yang berbeda dengan titik dua.git show 2c7cf:my_file.txt