guide/whitespace-options.md

Perbedaan Opsi Abaikan Spasi — diff -b, -w, -B, -Z dan Padanannya di git

Membandingkan dengan contoh perbedaan tepat antara abaikan spasi akhir baris, abaikan jumlah spasi (-b), abaikan semua spasi (-w), abaikan baris kosong (-B), dan abaikan huruf besar/kecil beserta opsi GNU diff dan git.

Terakhir diperbarui: 2026-09-23

Banyak kasus ketika dua file "isinya sama" tetapi diff menampilkan banyak perbedaan disebabkan oleh spasi: editor menghapus spasi di akhir baris, mengganti tab menjadi spasi, atau mengubah lebar indentasi. Alat diff menyediakan opsi untuk mengabaikan perbedaan seperti ini, tetapi setiap opsi mengabaikan cakupan yang berbeda, jadi Anda perlu tahu persis cara kerjanya.

Opsi GNU diff yang berkaitan dengan spasi

OpsiNama panjangYang diabaikan
-Z--ignore-trailing-spaceSpasi di akhir baris
-E--ignore-tab-expansionPerbedaan akibat tab yang diurai menjadi spasi
-b--ignore-space-changePerubahan jumlah spasi, spasi di akhir baris
-w--ignore-all-spaceSemua spasi
-B--ignore-blank-linesPerubahan yang hanya menambah atau menghapus baris kosong
-i--ignore-caseHuruf besar/kecil
--strip-trailing-crKarakter CR di akhir baris masukan

Padanan opsi di git diff

Dokumentasi git menjelaskannya sebagai berikut.

Perbedaan penting -b dan -w

Kedua opsi ini sering tertukar. Intinya adalah apakah opsi itu membedakan ada atau tidaknya spasi.

KiriKanan-b (abaikan jumlah spasi)-w (abaikan semua spasi)
a ba bSamaSama
a babBedaSama
x = 1x=1BedaSama
if (a) + spasi di akhir barisif (a)SamaSama
Indentasi 1 tabIndentasi 4 spasiSamaSama

-b meringkas setiap gumpalan spasi menjadi satu spasi, sedangkan -w menghapus semua spasi. Karena itu -w menganggap x = 1 dan x=1 sama, bahkan int a dan inta pun dianggap sama.

Bahaya jika indentasi bermakna

Pada file yang indentasinya bagian dari sintaks seperti Python, YAML, dan Makefile, opsi abaikan spasi bisa menyembunyikan perubahan yang nyata.

if ready:
    start()
    notify()
if ready:
    start()
notify()

Pada yang kedua, notify() keluar dari blok if sehingga perilakunya berubah, tetapi jika dibandingkan dengan -w, semua spasi dihapus sehingga perbedaannya hilang. -b menangkap perbedaan ini karena spasi di awal baris berubah dari "ada" menjadi "tidak ada". Namun, jika indentasi berubah dari 4 menjadi 8 spasi dan kode masuk ke blok yang lebih dalam, yang berubah hanyalah jumlah spasi, sehingga -b pun tidak menampilkannya.

Cara yang pasti adalah membandingkan file yang indentasinya penting tanpa opsi spasi. Kebiasaan yang aman adalah memakai opsi spasi untuk memastikan bahwa "perubahannya hanya perapian", lalu melakukan pemeriksaan akhir tanpa opsi.

Cakupan abaikan baris kosong (-B)

-B dan --ignore-blank-lines di git menyembunyikan perubahan yang hanya terdiri dari baris kosong. Jika penambahan baris kosong tercampur dengan perubahan nyata dalam hunk yang sama, baris kosong itu bisa tetap ditampilkan. Opsi ini berguna untuk dokumen yang jumlah baris kosong antarparagrafnya diubah, atau ketika pemformat kode merapikan baris kosong antarfungsi.

Opsi situs ini dan padanannya

Situs iniTerdekat di GNU diffTerdekat di git diff
Spasi: bandingkan apa adanya(tanpa opsi)(tanpa opsi)
Spasi: abaikan spasi di akhir baris-Z--ignore-space-at-eol
Spasi: abaikan jumlah spasi-b-b
Spasi: abaikan semua spasi-w-w
Abaikan huruf besar/kecil-i(tidak ada padanan)
Abaikan baris kosongMirip -B (baris kosong dikeluarkan dari perbandingan)Mirip --ignore-blank-lines
Normalkan akhir baris--strip-trailing-cr + abaikan baris baru terakhirMirip --ignore-cr-at-eol

"Abaikan baris kosong" di situs ini mengeluarkan baris kosong sepenuhnya dari perbandingan dan hanya menampilkannya dengan warna pudar. Selain itu, opsi pengabaian juga berlaku untuk sorotan dalam baris: jika abaikan jumlah spasi diaktifkan, bagian yang hanya berbeda jumlah spasinya tidak disorot.

Coba di alat ini

Masukkan contoh dari tabel di atas ke Pembanding Teks dan ubah opsi spasi satu per satu; perbedaannya langsung terlihat. "Perbedaan tak terlihat" seperti CR di akhir baris atau baris baru di akhir file dibahas di Karakter akhir baris dan perbedaan tak terlihat, dan cara membaca hasil sebagai patch di Cara membaca unified diff.

Buka pembanding teks