Boşluk çakışmaları olmadan birleştirme


179

Bin satır kod hakkında değişen, satır sonundan boşluk kaldıran ve sekmelerden önce boşlukları kaldıran büyük bir taahhüdüm var.

Bu proje için taahhüdüm birleştirildiğinde hepsinin de çatışması olacak yaklaşık 50 çekme talebi var. Git'in gelecekteki işlemlerini birleştirirken, bunlardan birinin sadece boşluk değişikliği olduğu çakışmaları göz ardı edecek şekilde ayarlanabilmesinin herhangi bir yolu var mı?

Git'in kendisini değiştirmek veya üçüncü taraf bir araç kullanmak mümkün değildir, ancak bir kanca kullanmak iyidir.


Yanıtlar:


246
 git merge -Xignore-all-space

Veya (daha kesin)

 git merge -Xignore-space-change

birleştirme sırasında alanla ilgili tüm çatışmaları görmezden gelmek için yeterli olmalıdır.

Git farkına bakın :

--ignore-space-change

Boşluk miktarındaki değişiklikleri yoksay.
Bu, satır sonundaki boşlukları yok sayar ve bir veya daha fazla boşluk karakterinin diğer tüm dizilerini eşdeğer kabul eder.

--ignore-all-space

Çizgileri karşılaştırırken boşlukları yoksay.
Bu, bir satırda diğer satırın bulunmadığı bir boşluk olsa bile farklılıkları yok sayar.

ks1322 yorumlara iyi bir tavsiye ekler:

--no-commitGerçek taahhütten önce birleştirmeyle birleştirmeye ve incelemeye değer .


OP Callum Macrae bu durumda, birleştirme kesintisiz devam ve çekme isteği bantlarda bulunan sonda boşluk yerel dosyalara uygulanır, bildirir.
Ancak OP, söz konusu takip eden boşluklarla ilgilenen bir ön işleme kancası kullanır.
(Ben biraz benzer varsayalım bu bir , ayrıca burada başvurulan ).


OP'nin taahhüt öncesi kancasına burada atıfta bulunulur :

Sondaki boşlukları kaldırmaya ek olarak, sekmelerden önce bir ila üç boşluk kaldırır (sekme genişliğini 4 olarak ayarladım) ve EOL ekler.
EOL ekleyen kodun Windows'ta dosyayı sildiğini ancak çoğaltmayı başaramadığını bildirdim.


1
Şimdiye kadar yaptığım testlerden, dosyadaki tüm boşluk değişikliklerini kaldırdığı görülüyor. Ancak, şimdi bir sorun değil böylece kuyruk boşluğu kaldırmak için ön-taahhüt kanca kullanıyorum.
callumacrae

1
@CallumMacrae: tamam ve geri bildiriminiz için teşekkür ederiz. Yine, daha fazla görünürlük için bağlantınızı yanıta ekledim.
VonC

1
git merge -Xignore-space-change- bunun kesin olarak işe yaramadığını söyleyebilirim . Kaldırmaya çalıştığım tek boşluk kaldı. Git kesinlikle berbat.
jww

1
--no-commitGerçek taahhütten önce birleştirmeyle birleştirmeye ve incelemeye değer .
ks1322

1
-Xignore-all-space boşluk hakkında hiçbir şey yapmıyor gibi görünüyor ve --ignore-space-change git tarafından bir seçenek olarak tanınmadı
Preza8
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.