Apakah ada perintah di Git untuk melihat (baik dibuang ke stdout, atau di $PAGER
atau $EDITOR
) versi tertentu dari file tertentu?
git
git-commands
git-history-graph
mikrofon
sumber
sumber
git checkout <sha1-of-the-commit-you-need>
, setelahnya,git checkout HEAD
Jawaban:
Anda dapat menggunakan
git show
lintasan dari akar repositori (./
atau../
untuk lintasan relatif):Ganti
REVISION
dengan revisi Anda yang sebenarnya (bisa berupa Git commit SHA, nama tag, nama cabang, nama komit relatif, atau cara lain untuk mengidentifikasi komit di Git)Misalnya, untuk melihat versi file
<repository-root>/src/main.c
dari 4 komit yang lalu, gunakan:Git untuk Windows memerlukan garis miring maju bahkan di jalur relatif ke direktori saat ini. Untuk informasi lebih lanjut, lihat halaman manual untuk
git-show
.sumber
Melakukan ini berdasarkan tanggal terlihat seperti ini:
Catatan itu
HEAD@{2013-02-25}
berarti "di mana HEAD berada pada 2013-02-25" di repositori ini (menggunakan reflog ), bukan "komit terakhir sebelum 2013-02-25 di cabang ini dalam sejarah".sumber
master
sebagai gantiHEAD@{2013-02-25}
, jika Anda berada di cabanggit log --since='2016-04-28 23:59:59 +0100'
?Jika Anda menyukai GUI, Anda dapat menggunakan gitk:
mulai gitk dengan:
Pilih revisi di bagian atas layar, mis. Dengan deskripsi atau tanggal. Secara default, bagian bawah layar menunjukkan perbedaan untuk revisi itu, (sesuai dengan tombol radio "tambalan").
Untuk melihat file untuk revisi yang dipilih:
sumber
gitk REVISION /path/to/file
. Ini bisa berguna ketika Anda ingin memeriksa versi tertentu misalnya.Anda juga dapat menentukan
commit hash
(sering juga disebutcommit ID
) dengangit show
perintah .Pendeknya
git show <commitHash>:/path/to/file
Selangkah demi selangkah
git log /path/to/file
commit hash
seperticommit 06c98...
(06c98 ... menjadi hash komit)commit hash
git show <commitHash>:/path/to/file
menggunakancommit hash
langkah 3 &path/to/file
langkah 1.Catatan: menambahkan
./
ketika menentukan jalur relatif tampaknya penting, yaitugit show b2f8be577166577c59b55e11cfff1404baf63a84:./flight-simulation/src/main/components/nav-horiz.html
.sumber
git show <SHA1> --name-only
untuk mendapatkannya.Selain jawaban Jim Hunziker ,
Anda dapat mengekspor file dari revisi sebagai,
Semoga ini membantu :)
sumber
Untuk dengan cepat melihat perbedaan dengan revisi file yang lebih lama:
sumber
git log -p
akan menunjukkan kepada Anda tidak hanya log komit tetapi juga diff dari setiap komit (kecuali gabungan komit). Kemudian Anda dapat menekan/
, masukkan nama file dan tekanenter
. Tekann
ataup
untuk pergi ke kejadian berikutnya / sebelumnya. Dengan cara ini Anda tidak hanya akan melihat perubahan dalam file tetapi juga informasi komit.sumber
git log -pm
juga akan menampilkan komit gabungan.git log -p -- filename.txt
untuk membatasi riwayat hanya file yang diinginkan.Anda dapat menggunakan skrip seperti ini untuk membuang semua versi file ke file yang terpisah:
misalnya
Dapatkan skrip di sini sebagai jawaban untuk pertanyaan serupa lainnya
sumber
git_root
,git_log_short
dangit_log_message_for_commit
hilang.CARA 1: (Saya lebih suka cara ini)
git reflog
git diff-tree --no-commit-id --name-only -r <commitHash>
git show <commitHash>:/path/to/file
CARA 2:
git reflog
git reset --hard %commit ID%
sumber
Membantu mengambil beberapa file dari revisi yang diberikan
Saat mencoba menyelesaikan konflik gabungan, pembantu ini sangat berguna:
GitHub hulu .
Pemakaian:
Hasil: berikut ini berisi versi alternatif dari file:
Dengan cara ini, Anda menyimpan ekstensi file sehingga editor Anda tidak akan mengeluh, dan dapat dengan mudah menemukan file lama tepat di sebelah yang lebih baru.
sumber