Penggabungan tanpa konflik spasi putih

179

Saya punya masalah di mana saya punya komit besar yang mengubah sekitar seribu baris kode, menghapus spasi dari ujung baris dan menghapus spasi sebelum tab.

Ada juga sekitar 50 permintaan tarik untuk proyek ini, yang semuanya akan mengalami konflik ketika komit saya digabung. Apakah ada cara agar git dapat diatur sehingga ketika menggabungkan komitmen di masa depan, ia mengabaikan konflik ketika salah satunya hanyalah perubahan spasi putih?

Memodifikasi git sendiri atau menggunakan alat pihak ketiga tidak mungkin, tetapi menggunakan hook tidak masalah.

callumacrae
sumber
Kemungkinan duplikat dari masalah ruang putih git
Cees Timmerman

Jawaban:

246
 git merge -Xignore-all-space

Atau (lebih tepat)

 git merge -Xignore-space-change

harus cukup untuk mengabaikan semua konflik terkait ruang selama penggabungan.

Lihat git diff :

--ignore-space-change

Abaikan perubahan jumlah spasi putih.
Ini mengabaikan spasi putih pada akhir baris, dan menganggap semua urutan lain dari satu atau lebih karakter spasi putih menjadi setara.

--ignore-all-space

Abaikan spasi ketika membandingkan garis.
Ini mengabaikan perbedaan bahkan jika satu baris memiliki spasi di mana baris lainnya tidak memiliki.

ks1322 menambahkan komentar saran yang bagus:

Layak untuk bergabung dengan --no-commitdan meninjau merger sebelum melakukan yang sebenarnya .


The OP Callum Macrae melaporkan bahwa, dalam kasus itu, penggabungan melanjutkan terganggu, dan spasi tambahan yang terkandung dalam patch permintaan tarik diterapkan ke file lokal.
Namun, OP menggunakan kait pra-komit yang menangani spasi tambahan tersebut.
(Saya kira agak mirip dengan ini , juga dirujuk di sini ).


Kait pra-komitmen OP dirujuk di sini :

Selain menghapus spasi spasi, itu menghapus satu hingga tiga spasi sebelum tab (Saya memiliki lebar tab yang diatur ke 4), dan menambahkan EOL.
Saya sudah mendapat laporan bahwa kode yang menambahkan EOL menghapus file di windows, tetapi belum dapat mereplikasinya.

VONC
sumber
1
Dari pengujian saya sejauh ini, sepertinya menghapus semua perubahan spasi putih di file. Namun, saya sekarang menggunakan kait pre-commit untuk menghapus tailing whitespace sehingga tidak menjadi masalah.
callumacrae
1
@CallumMacrae: ok, dan terima kasih atas umpan baliknya. Sekali lagi, saya telah menambahkan tautan Anda dalam jawaban untuk visibilitas lebih.
VonC
1
git merge -Xignore-space-change- baik, saya dapat mengatakan dengan pasti ini tidak bekerja ... . Sepotong spasi putih yang saya coba hapus tetap ada. Git benar-benar menyebalkan.
jww
1
Layak untuk bergabung dengan --no-commitdan meninjau merger sebelum melakukan yang sebenarnya.
ks1322
1
-Xignore-all-space tampaknya tidak melakukan apa-apa tentang spasi putih dan --ignore-space-change tidak dikenali sebagai opsi oleh git
Preza8