SORU
27 Mayıs 2009, ÇARŞAMBA


'onlarınki kabul' veya 'benimkini kabul' tüm dosya üzerinde gıt kullanarak basit bir araç

Birleştirme görsel bir araç istemiyorum, ve ben de vı çakışan dosya var ve el ile KAFA (benim) ve ithal değişikliği (onların) arasında seçim yapmak istemiyorum. Çoğu zaman da yapılan bütün değişiklikleri ya da benim her şeyi istiyor. Genellikle bu benim değişim upsteam yaptı ve geri çekme yoluyla bana geliyor, ama biraz çeşitli yerlerde değiştirilebilir olmasıdır.

Çatışma işaretleri kurtulmak ve bir şekilde benim seçimim dayalı seçim olacak bir komut satırı aracı var mı? Ya ben hangi gıt komutları kendimi her bir diğer adı.

# accept mine
alias am="some_sequence;of;commands"
alias at="some_other_sequence;of;commands"

Bunu yaparken oldukça can sıkıcı bir durum. 'Benim' denedim: . kabul etmek için

randy@sabotage ~/linus $ git merge test-branch
Auto-merging Makefile
CONFLICT (content): Merge conflict in Makefile
Automatic merge failed; fix conflicts and then commit the result.

randy@sabotage ~/linus $ git checkout Makefile 
error: path 'Makefile' is unmerged

andy@sabotage ~/linus $ git reset --hard HEAD Makefile 
fatal: Cannot do hard reset with paths.

Nasıl bu değişim işaretleri kurtulmak gerekiyor?

Yapabileceğim:

git reset HEAD Makefile; rm Makefile; git checkout Makefile

Ama bu daha iyi bir yolu olmalı yuvarlak, görünüyor. Ve bu noktada, eğer gıt hatta bu ille de bile çalıştığını sanmıyorum bu yüzden oldu birleştirme düşünüyorsa emin değilim.

Diğer taraftan gidersek, 'onların' eşit bir şekilde dağınık.kabul yapıyor Tek yolu bunu şekil:

git show test-branch:Makefile > Makefile; git add Makefile;

Çatışmalar bu da bana mesaj kaydetme bir haberci verir: Makefile iki kez.

Birisi basit bir şekilde yukarıdaki iki eylemler yapmak için nasıl işaret edebilir misiniz? Teşekkürler

CEVAP
27 Mayıs 2009, ÇARŞAMBA


Çözüm çok basit. git checkout <filename> dosyasını kontrol etmek için çalışırdizinve birleştirme başarısız. bu nedenle.

Yapman gereken şey (yani bir çıkışcommit):

Ödeme için kendi sürümübirini kullanabilirsiniz:

git checkout HEAD -- <filename>

git checkout --ours -- <filename>

git show :2:<filename> > <filename> # (stage 2 is ours)

Ödeme için başka bir versiyonubirini kullanabilirsiniz:

git checkout test-branch -- <filename>

git checkout --theirs -- <filename>

git show :3:<filename> > <filename> # (stage 3 is theirs)

Ayrıca 'add' çözümlendi olarak işaretle: . çalıştırmanız gerekir

git add <filename>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • El SalvaLobo

    El SalvaLobo

    10 Temmuz 2006
  • Gan Eden Productions

    Gan Eden Pro

    11 HAZİRAN 2011
  • NYCarspotter

    NYCarspotter

    26 EYLÜL 2011