"git diff --stat" dan "git log --stat" menunjukkan keluaran seperti:
$ git diff -C --stat HEAD c9af3e6136e8aec1f79368c2a6164e56bf7a7e07
app/controllers/application_controller.rb | 34 +++-------------------------
1 files changed, 4 insertions(+), 30 deletions(-)
Tetapi apa yang sebenarnya terjadi dalam komit itu adalah bahwa 4 baris diubah dan 26 baris dihapus yang berbeda dengan menambahkan 4 baris dan menghapus 30.
Apakah ada cara untuk mendapatkan LOC delta (26 dalam kasus ini)? Saya tidak terlalu peduli tentang membedakan antara garis yang ditambahkan atau dihapus.
--word-diff
. Itu mungkin lebih berguna.git diff --numstat
dipecah berdasarkan file. Untuk melihat total yang ditambahkan / dihapus untuk perbedaan tersebut, Anda dapat menyalurkannya ke awk:git diff --numstat | awk '{ added += $1; removed += $2 } END { print "+" added " -" removed }'
git diff --shortstat
. Dalam pengalaman saya, ini setara dengan mengumpulkan output darigit diff --numstat
.--cached
Jika Anda ingin mengetahui baris yang ditambahkan / diubah / dihapus oleh komit dengan id
commit-id
, Anda dapat menggunakanatau
Jika Anda ingin mengetahui baris yang ditambahkan / diubah / dihapus oleh suatu rentang komit, Anda dapat menggunakan
Jika Anda ingin mengetahui baris yang ditambahkan / diubah / dihapus oleh setiap komit, Anda dapat menggunakan
sumber
Jika semua file Anda dipentaskan untuk komit, untuk melihat
--numstat
prosesnya seperti ini:sumber
git menggunakan diff "unified", yang hanya menambahkan dan menghapus baris, sebagai format diff. Anda harus melakukan sesuatu yang eksternal untuk mendapatkan diff yang menunjukkan menambah, menghapus, dan mengubah informasi.
https://wiki.postgresql.org/wiki/Working_with_Git#Context_diffs_with_Git memberikan tautan ke skrip yang memungkinkan menjalankan "diff" lama biasa - dan dari situ Anda dapat menghasilkan keluaran diff "konteks" . Perbedaan konteks memang menunjukkan baris yang ditambahkan, dihapus, dan diubah, yang memungkinkan Anda mendapatkan data yang Anda inginkan.
sumber
Anda dapat menggunakan
diffstat
untuk menunjukkan jumlah baris yang dimodifikasi. Sebagai contoh:The
-C
pilihan adalah untuk mendapatkan output colourised; yang-m
pilihan adalah untuk menunjukkan jumlah baris yang diubah. Output sampel:Hitungan jumlah baris yang dimodifikasi adalah perkiraan, seperti yang
man diffstat
dikatakan:Satu perbedaan utama antara
git diff --stat
dandiffstat
:diffstat
tidak menunjukkan pemindahan / penggantian nama file (misalnyaapp/{a.rb => b.rb}
).sumber