Cara menggunakan awkuntuk menampilkan hanya garis +dan -, akuntansi untuk setiap warna atau format teks git diffmungkin menghasilkan:
Tidak satu pun dari jawaban lain di sini (termasuk jawaban saya yang lain ) akan melakukan apa yang Anda inginkan 100% dengan benar. Namun, jawaban ini akan. Ini adalah 1-liner yang dapat Anda salin dan tempel ke terminal Anda. Saya baru saja membuatnya beberapa baris agar mudah dibaca - Anda dapat menyalin-menempelnya dengan cara yang sama sehingga saya mungkin membuatnya dapat dibaca! Itu bergantung pada awkbahasa pemrograman:
git diff --color=always "$@" | awk '
# 1. Match and then skip "--- a/" and "+++ b/" lines
/^(\033\[(([0-9]{1,2};?){1,10})m)?(--- a\/|\+\+\+ b\/)/ {
next
}
# 2. Now print the remaining "+" and "-" lines ONLY! Note: doing step 1 above first was required or
# else those lines would have been matched by this matcher below too since they also begin with
# the "+" and "-" symbols.
/^(\033\[(([0-9]{1,2};?){1,10})m)?[-+]/ {
print $0
}
' | less -RFX
Berikut fitur-fiturnya. Semua fitur ini, ketika diambil bersama-sama, menyelesaikan kekurangan dari setiap jawaban lainnya di sini:
- Ini menangani warna DAN output tanpa warna. Itulah yang dilakukan ekspresi reguler ini:
^(\033\[(([0-9]{1,2};?){1,10})m)?
- Ini menangani SEMUA WARNA dan SEMUA PILIHAN PEMBENTUKAN TEKS, termasuk cetak tebal, miring, dicoret, dll, yang dapat Anda atur dalam
git configpengaturan Anda . Itu sebabnya regex di atas memiliki ;?dan {1,10}di dalamnya: jika ia mendeteksi awal kode pemformatan warna atau teks, itu akan cocok dengan 10 urutan kode ANSI gabungan ini.
Ini TIDAK juga termasuk baris yang dimulai dengan @@dan kata diff, seperti jawaban yang diterima . Jika Anda ingin garis-garis itu (yang terus terang, saya pikir berguna :)), lakukan ini sebagai gantinya:
git diff --unified=0
atau
git diff -U0
Ini menunjukkan output dengan cara yang sama persis seperti yang git diffakan: dalam lesspager dengan output warna opsional ( -R), dan hanya jika teksnya> 1 halaman ( -F), dan sambil mempertahankan halaman teks saat ini di layar ketika Anda quit ( -X) .
Ini juga memiliki manfaat menjadi kuat dan mudah dikonfigurasi karena menggunakan bahasa pemrograman awk.
Jika Anda tertarik mempelajari awk , berikut ini beberapa sumber:
gawkawkManual (GNU ): https://www.gnu.org/software/gawk/manual/html_node/index.html#SEC_Contents
- Pelajari
git diffndan komentar di dalamnya: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/git-diffn.sh
- Jika Anda menginginkannya
git diffn, yaitu git diffdengan nomor baris, lihat di sini: Git beda dengan nomor baris (Catatan log dengan nomor baris)
- Beberapa contoh "hello world" dan contoh uji sintaks: https://github.com/ElectricRCAircraftGuy/eRCaGuy_hello_world/tree/master/awk
Sebagai bonus, saya juga membungkus di atas untuk digunakan sebagai git diffc, yang berarti "git diff untuk menunjukkan HANYA 'c'hanges". Penggunaannya identik dengan git diff; gunakan git diffcsaja! Ini mendukung opsi SEMUA. Warna AKTIF secara default. Untuk mematikannya, cukup gunakan git diffc --no-coloratau git diffc --color=never. Lihat man git diffdetailnya.
Karena saya baru saja selesai git diffn(alat untuk menunjukkan git diffdengan garis 'n'umber) tadi malam, menulis git diffcitu sepele. Saya pikir saya lebih baik melakukannya sekarang sementara pengetahuan masih segar di kepala saya.
Pasang git diffc:
Ikuti instruksi di akhir jawaban ini di sini , kecuali di mana pun Anda melihat git-diffndalam instruksi, gunakan git-diffcsaja. Itu termasuk dalam wgetperintah juga. Mengunduh dan menginstalnya git diffcmudah: itu hanya beberapa perintah.