Git'te birleştirme çakışmaları nasıl çözülür?
Git'te birleştirme çakışmalarını nasıl çözerim?
4577
3
Git'te birleştirme çakışmalarını nasıl çözerim?
Dene:
git mergetool
Her çakışmada size adım adım yol gösteren bir GUI açar ve nasıl birleştireceğinizi seçersiniz. Bazen daha sonra biraz elle düzenleme gerektirir, ancak genellikle kendi başına yeterlidir. Kesinlikle her şeyi elle yapmaktan çok daha iyidir.
JoshGlover'ın yorumuna göre:
Komut, bir GUI yüklemediğiniz sürece mutlaka bir GUI açmaz. Benim için
git mergetool
çalıştırıldığındavimdiff
kullanıldı. Bunun yerine kullanmak için aşağıdaki araçlardan birini yükleyebilirsiniz: meld,
opendiff,
kdiff3,
tkdiff,
xxdiff,
tortoisemerge,
gvimdiff,
diffuse,
ecmerge,
p4merge,
araxis,
vimdiff,
emerge`.Aşağıda, birleştirme çakışmalarını çözmek için
vimdiff
kullanmak için örnek prosedür bulunmaktadır. Bu bağlantı]1 temel alınarakAdım 1: Terminalinizde aşağıdaki komutları çalıştırın
Bu, vimdiff'i varsayılan birleştirme aracı olarak ayarlayacaktır.
Adım 2: Aşağıdaki komutu terminalde çalıştırın
Adım 3: Aşağıdaki formatta bir vimdiff ekranı göreceksiniz
Bu 4 görüş şunlardır
Bu görünümler arasında ctrl+w kullanarak gezinebilirsiniz. Doğrudan ctrl+w ve ardından j kullanarak MERGED görünümüne ulaşabilirsiniz.
vimdiff navigasyonu hakkında daha fazla bilgi burada ve burada
Adım 4. MERGED görünümünü aşağıdaki şekilde düzenleyebilirsiniz
Değişiklikleri UZAKTAN almak istiyorsanız
BASE'den değişiklik almak istiyorsanız
LOCAL'den değişiklik almak istiyorsanız
Adım 5. Kaydet, Çık, İşle ve Temizle
:wqa
kaydet ve vi'den çıkgit commit -m "message"
git clean` Fark aracı tarafından oluşturulan ekstra dosyaları (örneğin *.orig) kaldırın.
Hangi dosyaların çakıştığını belirleyin (Git size bunu söylemelidir).
Her dosyayı açın ve farkları inceleyin; Git bunları ayırır. Umarım her bloğun hangi versiyonunun saklanacağı belli olur. Kodu işleyen diğer geliştiricilerle tartışmanız gerekebilir.
Bir dosyadaki çakışmayı çözdükten sonra
git add the_file
.Tüm çakışmaları çözdükten sonra,
git rebase --continue
veya başka bir komut verin Git, tamamladığında yapmanı söyledi.Eğer sık sık küçük commitler yapıyorsanız, o zaman
git log --merge
ile commit yorumlarına bakarak başlayın. Daha sonragit diff
size çakışmaları gösterecektir.Birkaç satırdan daha fazlasını içeren çatışmalar için, harici bir GUI aracında neler olup bittiğini görmek daha kolaydır. Ben opendiff'i seviyorum -- Git ayrıca vimdiff, gvimdiff, kdiff3, tkdiff, meld, xxdiff, emerge'i kutudan çıktığı gibi destekliyor ve diğerlerini de yükleyebilirsiniz: git config merge.tool "your.tool"
seçtiğiniz aracı ayarlayacak ve başarısız bir birleştirmeden sonra
git mergetool` size bağlamdaki farkları gösterecektir.Bir çakışmayı çözmek için bir dosyayı her düzenlediğinizde,
git add filename
dizini güncelleyecek ve farkınız artık onu göstermeyecektir. Tüm çakışmalar ele alındığında ve dosyalarıgit add
lendiğinde,git commit
birleştirme işleminizi tamamlayacaktır.