Git diff -w abaikan spasi putih hanya pada awal & akhir baris

367

Saya suka menggunakan git diff -wuntuk mengabaikan perbedaan spasi putih. Tapi, saya hanya memperhatikan bahwa itu mengabaikan perbedaan spasi putih di tengah garis. Bagaimana saya bisa mengabaikan perbedaan spasi putih yang muncul di awal (^) atau akhir ($) baris?

ma11hew28
sumber
31
Dianggap menggunakan git diff -bbukan?
Jonas Byström
5
"-b --ignore-space-change Abaikan perubahan dalam jumlah spasi putih. Ini mengabaikan spasi putih pada akhir baris, dan menganggap semua urutan lain dari satu atau lebih karakter spasi putih menjadi setara."
mowwwalker

Jawaban:

451

Untuk penggunaan akhir baris:

git diff --ignore-space-at-eol

Alih-alih apa yang Anda gunakan saat ini:

git diff -w (--ignore-all-space)

Sebagai permulaan baris ... Anda kurang beruntung jika Anda menginginkan solusi bawaan.

Namun, jika Anda tidak keberatan membuat tangan Anda kotor ada tambalan yang agak lama mengambang di sana di suatu tempat yang menambahkan dukungan untuk "--ignore-space-at-sol".

Kode Palsu Monyet Rashid
sumber
Terima kasih, tetapi tidak berfungsi jika Anda mengonfigurasi diff ke alat eksternal .. ada ide?
adardesign
@adardesign, saya pikir itu mungkin harus dikonfigurasi pada alat eksternal. Saya tidak yakin apakah ada yang bisa dilakukan git untuk menyajikan diff tanpa perubahan spasi putih ... bisa saja salah; git cukup kuat ...
johnny
Itu akan bagus untuk memilikinya dikonfigurasi secara default. Maksud saya -w atau -b atau --ignore-all-space. Ada diskusi tentang hal itu di stackoverflow.com/questions/7310033/...
Artyom
8
Saya setuju dengan saran -b, karena -w memperlakukan "abc def" dan "abcdef" sama, yang jarang saya inginkan!
Richard Wiseman
3

Ini adalah pertanyaan lama, tetapi masih dilihat / dibutuhkan secara teratur. Saya ingin memposting kepada pembaca yang berhati-hati seperti saya bahwa spasi putih sebagaimana disebutkan dalam pertanyaan OP tidak sama dengan definisi Regex, untuk memasukkan baris baru, tab, dan karakter luar angkasa - Git meminta Anda untuk secara eksplisit. Lihat beberapa opsi di sini: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

Seperti yang dinyatakan, git diff -batau git diff --ignore-space-changeakan mengabaikan spasi di ujung baris. Jika Anda menginginkan pengaturan itu sebagai perilaku default Anda, baris berikut menambahkan maksud itu ke file .gitconfig Anda, jadi itu akan selalu mengabaikan ruang di akhir baris:

git config --global core.whitespace trailing-space

Dalam kasus saya, saya menemukan pertanyaan ini karena saya tertarik untuk mengabaikan "perbedaan carriage return whitespace", jadi saya membutuhkan ini:

git diff --ignore-cr-at-eolatau git config --global core.whitespace cr-at-eoldari sini .

Anda juga dapat menjadikannya default hanya untuk repo itu dengan menghilangkan parameter --global, dan memeriksa file pengaturan untuk repo itu. Untuk masalah CR yang saya hadapi, masalah akan hilang setelah check-in jika warncrlf atau autocrlf = true di bagian [core] pada file .gitconfig.

terdesak
sumber