SourceTree / git'teki çatışmaları etkileşimli (görsel olarak) çözme


119

Git projem için (Windows) SourceTree kullanıyorum. Bunu komut isteminde veya Linux terminalinde yapabilirim.

Ancak, çatışmaları etkileşimli ve görsel olarak çözmenin güzel bir yolu olup olmadığını merak ediyorum. Örneğin, çekme çakışmaları tespit ederse, GUI tabanlı bir çakışma aracı (örneğin, P4Merge) açar. Mümkün mü?

Ben her zaman manuel çatışma çözme yapıyorum, bu sadece acı verici.

Bu, örneğin pullSourceTree'den bir git mesajıdır.

git -c diff.mnemonicprefix=false -c core.quotepath=false pull --no-commit origin master
From W:\repo\
 * branch            master     -> FETCH_HEAD   

Updating 33c07bf..41e0249

error: Your local changes to the following files would be overwritten by merge:
    foo.cpp
    goo.cpp
    goo.hpp
Please, commit your changes or stash them before you can merge.
Aborting    

Completed with errors, see above.

Yanıtlar:


135

SourceTree'den, Araçlar-> Seçenekler'e tıklayın. Sonra "Genel" sekmesinde, SourceTree'nin Git yapılandırma dosyalarınızı değiştirmesine izin vermek için kutuyu işaretlediğinizden emin olun.

Ardından "Diff" sekmesine geçin. Alt yarısında, farkları yapmak ve birleştirmek için kullanmak istediğiniz harici programı seçmek için açılır menüyü kullanın. Ben yükledim KDiff3 ve bunun gibi yeterince iyi. Bitirdiğinizde Tamam'ı tıklayın.

Artık bir birleştirme olduğunda, Eylemler-> Çatışmaları Çöz-> Harici Birleştirme Aracını Başlat altına gidebilirsiniz.


4
Bunu denedim, ancak sonunda, piyasaya sürülmenin ötesini görmüyorum. Oluşturulan dosyaları karşılaştırıyorum, ama hepsi bu. Çatışmayı çözemiyorum. Bunu standart / varsayılan karşılaştırmaya değiştirmek de yardımcı olmuyor.
Echiban

1
@echiban Muhtemelen Beyond Compare için 3 yollu birleştirmeyi kabul etmeyen standart lisansa sahipsiniz. Git mergetool olarak kullanmak için profesyonel olmanız gerekiyor
pierdevara

6
"Harici Birleştirme Aracını Başlat" ı yapılandırmak için tüm adımları
uyguladıktan

2
Ayrıca birleştirme çakışma dosyasını
seçmiyordum

2
Grileştirilmeden önce yürütme listesindeki "Uncommited changes" öğesine tıklamak zorunda kaldım.
Micah Zoltu

11

SourceTree ile birlikte TortoiseMerge / Diff kullanıyorum, bu çok kolay ve rahat bir fark / birleştirme aracı.

Siz de kullanmak istiyorsanız, o zaman:

  1. TortoiseMerge / Diff'in bağımsız sürümünü edinin (oldukça eski, çünkü TortosieSVN'nin 1.6.7 sürümünden bu yana, yani Temmuz 2011'den beri tek başına gönderilmiyor). Bu cevaptaki bağlantılar ve ayrıntılar .

  2. Açın TortoiseIDiff.exeve TortoiseMerge.exeherhangi bir klasöre ( c:\Program Files (x86)\Atlassian\SourceTree\extras\benim durumumda).

  3. SourceTree'de açık Tools > Options > Diff > External Diff / Merge. Seç TortoiseMergehem açılır listelerindeki.

  4. Hit OKve bulunduğunuz yere gelin SourceTree TortoiseIDiff.exeve TortoiseMerge.exe.

Bundan sonra, Resolve Conflicts > Launch External Merge Toolyerel deponuzdaki her çakışan dosyadaki bağlam menüsünden seçim yapabilirsiniz . Bu, sahip olduğunuz tüm çatışmalarla kolayca başa çıkabileceğiniz TortoiseMerge'i açacaktır. Bitirdiğinizde, TortoiseMerge'i kapatın (değişiklikleri kaydetmenize bile gerek yoktur, bu muhtemelen otomatik olarak yapılacaktır) ve birkaç saniye sonra SourceTree bunu zarif bir şekilde halledecektir.

Tek sorun, uygun seçenek işaretlenmemiş olsa bile otomatik olarak yedek kopya oluşturmasıdır .


4

Çatışmaları Çöz-> İçerik Menüsü devre dışı bırakıldığında, Bekleyen dosyalar listesinde olabilir. Açılır menüden Çakışan dosyalar seçeneğini seçmemiz gerekiyor (üst)

Umarım yardımcı olur

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.