Jika Anda menggunakan GitHub untuk lokasi cloud dari repo Anda, ini sangat sederhana: navigasikan ke proyek Anda dan klik tajuk "commit" di tabel yang menampilkan proyek Anda
David Lundquist
1
Arti "versi saat ini dan yang terakhir" benar-benar harus diklarifikasi dalam pertanyaan.
faintsignal
Jawaban:
1171
Saya tidak begitu mengerti arti "versi terakhir".
Karena komit sebelumnya dapat diakses dengan HEAD ^, saya pikir Anda mencari sesuatu seperti:
git diff HEAD^ HEAD
Pada Git 1.8.5, @adalah alias untuk HEAD, sehingga Anda dapat menggunakan:
git diff @~..@
Berikut ini juga akan berfungsi:
git show
Jika Anda ingin mengetahui perbedaan antara head dan komit apa saja yang dapat Anda gunakan:
git diff commit_id HEAD
Dan ini akan meluncurkan alat diff visual Anda (jika dikonfigurasi):
git difftool HEAD^ HEAD
Karena perbandingan dengan HEAD adalah default, Anda dapat menghilangkannya (seperti yang ditunjukkan oleh Orient ):
git diff @^
git diff HEAD^
git diff commit_id
Peringatan
@ScottF dan @Panzercrisis menjelaskan dalam komentar bahwa pada Windows ~karakter harus digunakan sebagai ganti ^.
Saya menginginkan sesuatu seperti versi dan versi yang dikomit sebelumnya ... git diff head head-1
Rajeev
7
Pada Git 1.8.5, @adalah alias untuk HEAD. Dan karena ~dan ^sama ketika hanya akan melakukan satu komit, saya merasa git diff @~..@jauh lebih mudah untuk mengetik.
Andrew
80
@Andrew git showmasih lebih mudah, karena @~..@merupakan hal standar untuk ditampilkan.
amalloy
3
git showhanya mencetak pesan komit, itu tidak menghasilkan perbedaan dari perubahan spesifik, setidaknya dalam Git 2.5.4 (Apple Git-61), jadi itu sebenarnya tidak akan menjadi jawaban untuk pertanyaan OP.
user1944491
1
Masalahnya git showadalah jika HEADkomit gabungan Anda tidak akan mendapatkan apa yang Anda harapkan karena komit gabungan itu sendiri mungkin tidak memiliki perubahan itu sendiri. git diff HEAD^ HEADakan menampilkan perubahan aktual antara versi
RubenLaguna
158
Dengan asumsi "versi saat ini" adalah direktori kerja (modifikasi yang tidak dikomit) dan "versi terakhir" adalah HEAD(modifikasi terakhir yang dilakukan untuk cabang saat ini), cukup lakukan
git diff HEAD
Kredit untuk yang berikut ini jatuh ke tangan pengguna Cerran.
Dan jika Anda selalu melewati area pementasan dengan -asaat Anda komit, maka Anda cukup menggunakan git diff.
Ringkasan
git diff menunjukkan perubahan yang tidak bertahap.
git diff --cached menunjukkan perubahan bertahap.
git diff HEAD menunjukkan semua perubahan (baik bertahap maupun tidak bertahap).
Dan jika Anda selalu melewati area pementasan dengan -asaat Anda komit, maka Anda cukup menggunakan git diff. <1> git diffmenunjukkan perubahan yang tidak bertahap . <2> git diff --cachedmenunjukkan perubahan bertahap . <3> git diff HEADmenunjukkan semua perubahan (baik bertahap maupun tidak bertahap). Sumber: git-diff (1) Halaman Manual
Cerran
1
Ini harus menjadi jawaban yang diterima karena itu menjawab maksud pertanyaan.
tgoneil
Apa nama "versi tidak aktif saat ini" di git? Apakah sebenarnya ada nama?
Mathieu CAROFF
118
Seperti yang ditunjukkan pada komentar oleh amalloy , jika dengan "versi saat ini dan terakhir" yang Anda maksud komit terakhir dan komit sebelum itu, Anda bisa menggunakan
Gunakan git show HEAD~1untuk memperlihatkan komit terakhir tetapi satu, dan git show HEAD~2, dll. Untuk komit yang lebih lama. Tampilkan hanya satu file melalui git show HEAD~2 my_file.
Florian Brucker
60
Perbedaan antara komitmen terakhir tetapi satu komit dan terakhir (ditambah kondisi saat ini, jika ada):
git diff HEAD~
atau bahkan (lebih mudah untuk mengetik)
git diff @~
di mana @sinonim untuk HEADcabang saat ini dan ~berarti "beri saya orang tua dari revisi yang disebutkan".
Saya sangat suka git diff HEAD^(daripada HEAD~bentuk yang setara ).
Sedikit
3
Wortel adalah masalah di beberapa terminal. Senang memiliki opsi
light24bulbs
1
Jawaban dapat ditingkatkan dengan menjelaskan apa ~dan apa @artinya.
Bob Stein
1
Jika kami hanya ingin memeriksa apa yang dilakukan pada commit terakhir, jangan gunakan ini (karena perubahan kotor mempengaruhi diff). Sintaks yang lebih pendek dari diff HEAD^ HEADseharusnya git diff @^!. Lihat git-scm.com/docs/gitrevision untukr1^!
Johnny Wong
@JohnnyWong Terima kasih atas klarifikasi. Saya menyebutkan "keadaan saat ini" untuk tidak membingungkan pembaca.
Tomilov Anatoliy
53
Anda dapat melakukannya dengan cara ini juga:
Bandingkan dengan komit sebelumnya
git diff --name-status HEAD~1..HEAD
Bandingkan dengan dua komitmen saat ini dan sebelumnya
Pertama, gunakan "git log " untuk membuat daftar log untuk repositori.
Sekarang, pilih dua ID komit, yang berkaitan dengan dua komit. Anda ingin melihat perbedaan ( contoh - Komit terbanyak dan beberapa komit yang lebih lama (sesuai harapan Anda akan versi saat ini dan beberapa versi lama) ).
Jawaban:
Saya tidak begitu mengerti arti "versi terakhir".
Karena komit sebelumnya dapat diakses dengan HEAD ^, saya pikir Anda mencari sesuatu seperti:
Pada Git 1.8.5,
@
adalah alias untukHEAD
, sehingga Anda dapat menggunakan:Berikut ini juga akan berfungsi:
Jika Anda ingin mengetahui perbedaan antara head dan komit apa saja yang dapat Anda gunakan:
Dan ini akan meluncurkan alat diff visual Anda (jika dikonfigurasi):
Karena perbandingan dengan HEAD adalah default, Anda dapat menghilangkannya (seperti yang ditunjukkan oleh Orient ):
Peringatan
~
karakter harus digunakan sebagai ganti^
.sumber
@
adalah alias untukHEAD
. Dan karena~
dan^
sama ketika hanya akan melakukan satu komit, saya merasagit diff @~..@
jauh lebih mudah untuk mengetik.git show
masih lebih mudah, karena@~..@
merupakan hal standar untuk ditampilkan.git show
hanya mencetak pesan komit, itu tidak menghasilkan perbedaan dari perubahan spesifik, setidaknya dalam Git 2.5.4 (Apple Git-61), jadi itu sebenarnya tidak akan menjadi jawaban untuk pertanyaan OP.git show
adalah jikaHEAD
komit gabungan Anda tidak akan mendapatkan apa yang Anda harapkan karena komit gabungan itu sendiri mungkin tidak memiliki perubahan itu sendiri.git diff HEAD^ HEAD
akan menampilkan perubahan aktual antara versiDengan asumsi "versi saat ini" adalah direktori kerja (modifikasi yang tidak dikomit) dan "versi terakhir" adalah
HEAD
(modifikasi terakhir yang dilakukan untuk cabang saat ini), cukup lakukanKredit untuk yang berikut ini jatuh ke tangan pengguna
Cerran
.Dan jika Anda selalu melewati area pementasan dengan
-a
saat Anda komit, maka Anda cukup menggunakangit diff
.Ringkasan
git diff
menunjukkan perubahan yang tidak bertahap.git diff --cached
menunjukkan perubahan bertahap.git diff HEAD
menunjukkan semua perubahan (baik bertahap maupun tidak bertahap).Sumber: git-diff (1) Halaman Manual - Cerran
sumber
-a
saat Anda komit, maka Anda cukup menggunakangit diff
. <1>git diff
menunjukkan perubahan yang tidak bertahap . <2>git diff --cached
menunjukkan perubahan bertahap . <3>git diff HEAD
menunjukkan semua perubahan (baik bertahap maupun tidak bertahap). Sumber: git-diff (1) Halaman ManualSeperti yang ditunjukkan pada komentar oleh amalloy , jika dengan "versi saat ini dan terakhir" yang Anda maksud komit terakhir dan komit sebelum itu, Anda bisa menggunakan
sumber
git show HEAD~1
untuk memperlihatkan komit terakhir tetapi satu, dangit show HEAD~2
, dll. Untuk komit yang lebih lama. Tampilkan hanya satu file melaluigit show HEAD~2 my_file
.Perbedaan antara komitmen terakhir tetapi satu komit dan terakhir (ditambah kondisi saat ini, jika ada):
atau bahkan (lebih mudah untuk mengetik)
di mana
@
sinonim untukHEAD
cabang saat ini dan~
berarti "beri saya orang tua dari revisi yang disebutkan".sumber
git diff HEAD^
(daripadaHEAD~
bentuk yang setara ).~
dan apa@
artinya.diff HEAD^ HEAD
seharusnyagit diff @^!
. Lihat git-scm.com/docs/gitrevision untukr1^!
Anda dapat melakukannya dengan cara ini juga:
Bandingkan dengan komit sebelumnya
Bandingkan dengan dua komitmen saat ini dan sebelumnya
sumber
Cukup gunakan
cached
bendera jika Anda menambahkan, tetapi belum melakukan:sumber
Cepat dan sederhana, dengan asumsi Anda menguasai:
Contoh:
sumber
Pertama, gunakan "
git log
" untuk membuat daftar log untuk repositori.Sekarang, pilih dua ID komit, yang berkaitan dengan dua komit. Anda ingin melihat perbedaan ( contoh - Komit terbanyak dan beberapa komit yang lebih lama (sesuai harapan Anda akan versi saat ini dan beberapa versi lama) ).
Selanjutnya, gunakan:
atau
sumber
Jika komit atas ditunjuk oleh HEAD maka Anda dapat melakukan sesuatu seperti ini:
Perbedaan antara komit pertama dan kedua:
Perbedaan antara komit pertama dan ketiga:
Perbedaan antara komit kedua dan ketiga:
Dan seterusnya...
sumber
Saya menggunakan Bitbucket dengan Eclipse IDE dengan Eclipse EGit plugin diinstal.
Saya membandingkan file dari versi riwayatnya (seperti SVN ).
Menu Project Explorer → File → klik kanan → Team → Show in history .
Ini akan membawa sejarah semua perubahan pada file itu. Sekarang Ctrlklik dan pilih dua versi → "Bandingkan satu sama lain" .
sumber
Ini juga akan berfungsi untuk tag (hapus 'uniq' di bawah ini dan bagian lain jika Anda perlu melihat semua perubahan):
Di bawah ini adalah sama, dan yang dapat berguna untuk integrasi berkelanjutan (CI) untuk layanan microser dalam repositori monolitik:
(Kredit - https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo )
sumber