Cara menyelesaikan konflik secara interaktif (visual) di SourceTree / git

119

Saya menggunakan (Windows) SourceTree untuk proyek git saya. Saya dapat melakukannya di command prompt atau terminal Linux.

Tapi, saya bertanya-tanya apakah ada cara yang bagus untuk menyelesaikan konflik secara interaktif dan visual. Misalnya, jika pull mendeteksi konflik, memunculkan alat konflik berbasis GUI (misalnya, P4Merge). Apa itu mungkin?

Saya selalu melakukan penyelesaian konflik manual, yang menyakitkan.

Ini, misalnya, pullpesan git , dari SourceTree.

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.
Nullptr
sumber

Jawaban:

135

Dari SourceTree, klik Tools-> Options. Kemudian pada tab "General", pastikan untuk mencentang kotak untuk mengizinkan SourceTree mengubah file konfigurasi Git Anda.

Kemudian alihkan ke tab "Diff". Di bagian bawah, gunakan menu drop-down untuk memilih program eksternal yang ingin Anda gunakan untuk melakukan diff dan penggabungan. Saya telah menginstal KDiff3 dan menyukainya dengan cukup baik. Setelah selesai, klik OK.

Sekarang ketika ada penggabungan, Anda dapat masuk ke Tindakan-> Selesaikan Konflik-> Luncurkan Alat Penggabungan Eksternal.

gtrig
sumber
4
Saya mencoba ini, tetapi pada akhirnya, saya tidak melihat ada bandingannya diluncurkan. Saya melihat membandingkan file yang sedang dibuat, tapi hanya itu. Saya tidak bisa menyelesaikan konflik. Mengubah ini ke perbandingan standar / default tampaknya juga tidak membantu.
Echiban
1
@echiban Anda mungkin memiliki lisensi standar untuk Beyond Compare yang tidak menerima penggabungan 3 cara. Anda harus menjadi pro untuk menggunakannya sebagai git mergetool
pierdevara
6
Setelah mengikuti semua langkah untuk mengkonfigurasi "Launch External Merge Tool" masih redup bagi saya, tidak ada cara untuk mengaktifkannya
pal4life
2
Juga saya tidak memilih file konflik gabungan, setelah saya melakukannya, semuanya berjalan dengan baik
pal4life
2
Saya harus mengklik item "Perubahan yang tidak dilakukan" dalam daftar komit sebelum tidak berwarna abu-abu.
Mikha Zoltu
11

Saya menggunakan SourceTree bersama dengan TortoiseMerge / Diff, yang merupakan alat diff / merge yang sangat mudah dan nyaman.

Jika Anda ingin menggunakannya juga, maka:

  1. Dapatkan versi mandiri TortoiseMerge / Diff (cukup lama, karena tidak dikirimkan mandiri sejak TortosieSVN versi 1.6.7, yaitu sejak Juli 2011). Tautan dan detail dalam jawaban ini .

  2. Buka zip TortoiseIDiff.exedanTortoiseMerge.exe ke folder mana pun ( c:\Program Files (x86)\Atlassian\SourceTree\extras\dalam kasus saya).

  3. Di SourceTree terbuka Tools > Options > Diff > External Diff / Merge . Pilih TortoiseMergedi kedua daftar dropdown.

  4. Tekan OKdan arahkan SourceTree ke lokasi AndaTortoiseIDiff.exe dan TortoiseMerge.exe.

Setelah itu, Anda dapat memilih Resolve Conflicts > Launch External Merge Tooldari menu konteks pada setiap file konflik di repositori lokal Anda. Ini akan membuka TortoiseMerge, di mana Anda bisa dengan mudah menangani semua konflik yang Anda miliki. Setelah selesai, cukup tutup TortoiseMerge (Anda bahkan tidak perlu menyimpan perubahan, ini mungkin akan dilakukan secara otomatis) dan setelah beberapa detik SourceTree akan menanganinya dengan baik.

Satu-satunya masalah adalah, itu secara otomatis membuat salinan cadangan, meskipun opsi yang tepat tidak dicentang .

trejder
sumber
4

Ketika Selesaikan Konflik-> Menu Konten dinonaktifkan, salah satunya mungkin ada di daftar file Tertunda. Kita perlu memilih opsi file yang konflik dari drop down (atas)

semoga membantu

Ozkary
sumber