The git diff
perintah mengambil nilai-nilai opsional untuk --stat
:
--stat[=<width>[,<name-width>[,<count>]]]
Generate a diffstat. You can override the default output width for
80-column terminal by --stat=<width>. The width of the filename
part can be controlled by giving another width to it separated by a
comma. By giving a third parameter <count>, you can limit the
output to the first <count> lines, followed by ... if there are
more.
These parameters can also be set individually with
--stat-width=<width>, --stat-name-width=<name-width> and
--stat-count=<count>.
(Untuk pembuatan skrip, Anda mungkin ingin menggunakannya git diff-tree
secara langsung karena ini lebih merupakan perintah "pipa ledeng", meskipun saya kira Anda akan baik-baik saja. Perhatikan bahwa Anda memerlukan teks tambahan yang sama dengan --stat
saat menggunakan git diff-tree
. Perbedaan penting antara menggunakan git diff
"porselen "ujung depan, dan git diff-tree
perintah pipa ledeng, adalah yang git diff
mencari pengaturan yang dikonfigurasi untuk opsi seperti diff.renames
memutuskan apakah akan melakukan deteksi ganti nama. Nah, itu, ditambah ujung depan git diff
akan melakukan hal yang sama git diff-index
jika Anda membandingkan komit dengan indeks , misalnya. Dengan kata lain, git diff
membaca konfigurasi Anda dan memanggil pipa ledeng yang tepat secara otomatis .)
--stat-graph-width=...
sakelar terpisah . Perhatikan juga bahwa seting tinggi--stat-graph-width=
dan--stat-name-width=
tidak cukup, Anda juga harus menyetel--stat-width=
cukup besar untuk menutupi keduanya.diff.statGraphWidth
yang dapat Anda gunakan untuk menyetel--stat-graph-width
nilainya, tetapi yang lain default ke lebar terminal Anda. (Jadi, jawaban alternatif: "ya, buat saja jendela terminal Anda lebar 1000 kolom" :-))Untuk pemrosesan skrip, mungkin lebih baik menggunakan salah satu dari berikut ini:
Masing-masing menjadi lebih berguna untuk pemrosesan skrip yang kuat saat dikombinasikan dengan
-z
opsi, yang digunakanNUL
sebagai terminator bidang.sumber
git rev-parse --show-toplevel
. Masalah asli mengacu pada jalur yang terpotong, yang merupakan masalah di diffstats, terutama untuk nama file yang panjang atau nilai yang rendah untuk--stat-name-width
. Perintah di atas tidak akan memotong jalur, tetapi akan menampilkan jalur "lengkap" seperti yang diminta, meskipun masih relatif terhadap root repositori.Untuk pengguna Bash, Anda dapat menggunakan
$COLUMNS
variabel untuk secara otomatis mengisi lebar terminal yang tersedia:Nama jalur yang sangat panjang mungkin masih terpotong; dalam kasus ini, Anda dapat mengurangi lebar bagian +++ / --- menggunakan
--stat-graph-width
, misalnya ini membatasi hingga 1/5 dari lebar terminal:Untuk solusi yang lebih umum, Anda dapat menggunakan output dari
tput cols
untuk menentukan lebar terminal.sumber
--stat=$COLUMNS,$COLUMNS
? Mengetiknya setiap kali itu gila.export COLUMNS
ke~/.bashrc
, dan di~/.gitconfig
bawah Anda[alias]
, tambahkansmart-diff = ! "gitsmartdiff() { git diff $2 --stat=$COLUMNS,$COLUMNS; }; gitsmartdiff"
diff
. Saya ingin itu bekerja untuk merge and pulls dll juga. (Bahkan tidak dapat melakukannya secara manual di sana.) Saya rasa GIT tidak mendukungnya.Ada pilihan
--name-only
:git diff --name-only
. Opsi ini juga didukung oleh perintah git lain sepertishow
danstash
.Jalur tidak dipersingkat dengan opsi.
sumber
Saya membuat alias git berikut:
Itu membaca jumlah kolom dari
tput cols
perintah. Secara defaultmaster
ditetapkan ke diffing , tetapi Anda secara opsional dapat menentukan cabang lain.sumber
Solusi sederhana yang saya temukan adalah melakukan ini: (hanya berfungsi pada * nix, maaf tidak ada osx)
Versi ini berfungsi untuk keduanya, tetapi tidak terlihat bagus di osx.
sumber
Saya menemukan bahwa perilaku diff --stat berubah di suatu tempat di sekitar git 1.7.10 di mana sebelumnya itu akan mempersingkat jalur file ke lebar tetap secara default - sekarang menampilkan sebanyak yang diizinkan jendela terminal Anda. Jika Anda mengalami masalah ini, pastikan Anda meningkatkan ke 1.8.0 atau yang lebih baru.
sumber