Bir birleştirme çakışmasıyla karşılaştım. Birleştirmeyi nasıl iptal edebilirim?

Ben git pull kullandım ve birleştirme çakışması yaşadım:

unmerged:   _widget.html.erb

You are in the middle of a conflicted merge.

Dosyanın diğer sürümünün iyi ve benimkinin kötü olduğunu biliyorum, bu yüzden tüm değişikliklerimi terk etmeliyim. Bunu nasıl yapabilirim?

Çekme işleminiz başarısız olduğu için HEAD (HEAD^ değil) dalınızdaki son "geçerli" işlemdir:

git reset --hard HEAD

İstediğiniz diğer parça ise onların değişikliklerinin sizin değişikliklerinizi geçersiz kılmasına izin vermektir.

Git'in eski sürümleri "theirs" birleştirme stratejisini kullanmanıza izin veriyordu:

git pull --strategy=theirs remote_branch

Ancak bu, Junio Hamano'nun bu mesajında (Git bakımcısı) açıklandığı gibi, o zamandan beri kaldırılmıştır. Bağlantıda]1 belirtildiği gibi, bunun yerine şunu yapmalısınız:

git fetch origin
git reset --hard origin
Yorumlar (11)

Sanırım ihtiyacınız olan "git reset".

Dikkat edin, git revert, örneğin svn revertten çok farklı bir anlama gelir - Subversion'da revert (commit edilmemiş) değişikliklerinizi atarak dosyayı depodaki geçerli sürüme döndürür, oysa git revert "undoes" bir commit" eder.

git reset,svn revert` ile eşdeğer bir işlem yapmalı, yani istenmeyen değişikliklerinizi atmalıdır.

Yorumlar (0)

Bu özel kullanım durumunda, birleştirmeyi gerçekten iptal etmek istemezsiniz, sadece çakışmayı belirli bir şekilde çözmek istersiniz.

Sıfırlamaya ve farklı bir strateji ile birleştirme yapmaya da özellikle gerek yoktur. Çakışmalar git tarafından doğru bir şekilde vurgulanmıştır ve diğer tarafın değişikliklerini kabul etme gerekliliği sadece bu dosya içindir.

Bir çakışmadaki birleştirilmemiş bir dosya için git, dosyanın ortak temel, yerel ve uzak sürümlerini dizinde kullanılabilir hale getirir. (Bu sürümler git mergetool tarafından 3 yönlü bir fark aracında kullanılmak üzere buradan okunur). Bunları görüntülemek için git show kullanabilirsiniz.

# common base:
git show :1:_widget.html.erb

# 'ours'
git show :2:_widget.html.erb

# 'theirs'
git show :3:_widget.html.erb

Uzak sürümü harfi harfine kullanmak için çakışmayı çözmenin en basit yolu şudur:

git show :3:_widget.html.erb >_widget.html.erb
git add _widget.html.erb

Ya da git >= 1.6.1 ile:

git checkout --theirs _widget.html.erb
Yorumlar (3)