Menggunakan Git, bagaimana Anda bisa menemukan perbedaan antara versi saat ini dan yang terakhir?
git diff last version:HEAD
Menggunakan Git, bagaimana Anda bisa menemukan perbedaan antara versi saat ini dan yang terakhir?
git diff last version:HEAD
Jawaban:
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
~
karakter harus digunakan sebagai ganti ^
.@
adalah alias untuk HEAD
. Dan karena ~
dan ^
sama ketika hanya akan melakukan satu komit, saya merasa git 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 jika HEAD
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 versi
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 -a
saat 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).Sumber: git-diff (1) Halaman Manual - Cerran
-a
saat Anda komit, maka Anda cukup menggunakan git 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 Manual
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
git show
git show HEAD~1
untuk 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
.
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 HEAD
cabang saat ini dan ~
berarti "beri saya orang tua dari revisi yang disebutkan".
git diff HEAD^
(daripada HEAD~
bentuk yang setara ).
~
dan apa @
artinya.
diff HEAD^ HEAD
seharusnya git diff @^!
. Lihat git-scm.com/docs/gitrevision untukr1^!
Cukup gunakan cached
bendera jika Anda menambahkan, tetapi belum melakukan:
git diff --cached --color
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:
git diff <commit_id1> <commit_id2>
atau
git difftool <commit_id1> <commit_id2>
Jika komit atas ditunjuk oleh HEAD maka Anda dapat melakukan sesuatu seperti ini:
commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2
Perbedaan antara komit pertama dan kedua:
git diff HEAD~1 HEAD
Perbedaan antara komit pertama dan ketiga:
git diff HEAD~2 HEAD
Perbedaan antara komit kedua dan ketiga:
git diff HEAD~2 HEAD~1
Dan seterusnya...
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" .
Ini juga akan berfungsi untuk tag (hapus 'uniq' di bawah ini dan bagian lain jika Anda perlu melihat semua perubahan):
git diff v1.58 HEAD
Di bawah ini adalah sama, dan yang dapat berguna untuk integrasi berkelanjutan (CI) untuk layanan microser dalam repositori monolitik:
git diff v1.58 HEAD --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
<Folder Name>
(Kredit - https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo )