Як інтерактивно (візуально) вирішувати конфлікти в SourceTree / git


119

Я використовую (Windows) SourceTree для свого git проекту. Я можу це зробити або в командному рядку, або в Linux-терміналі.

Але мені цікаво, чи є приємний спосіб інтерактивного та візуального вирішення конфліктів. Наприклад, якщо тяга виявляє конфлікти, спливає інструмент конфлікту на основі GUI (наприклад, P4Merge). Це можливо?

Я завжди займаюся ручним вирішенням конфліктів, що просто боляче.

Це, наприклад, pullповідомлення git від 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.

Відповіді:


135

У SourceTree натисніть Інструменти-> Параметри. Потім перейдіть на вкладку "Загальні", переконайтесь, що прапорець SourceTree може змінювати ваші конфігураційні файли Git.

Потім перейдіть на вкладку "Різниця". У нижній половині скористайтеся спадною панеллю, щоб вибрати зовнішню програму, яку ви хочете використовувати, щоб виконати діффи і об'єднання. Я встановив KDiff3 і мені це подобається досить добре. Закінчивши, натисніть кнопку ОК.

Тепер, коли відбувається злиття, ви можете перейти до пункту Дії-> Вирішити конфлікти-> Запустити зовнішній інструмент злиття.


4
Я спробував це, але, врешті-решт, я не бачу, як запустити порівняння. Я бачу порівняння файлів, що створюються, але це все. Я не можу вирішити конфлікт. Зміна цього на стандартне порівняння / порівняння за замовчуванням теж не допомагає.
Ечібан

1
@echiban Ви, мабуть, маєте стандартну ліцензію на Beyond Compare, яка не приймає тристороннього злиття. Щоб використовувати його як git mergetool
pierdevara


2
Також я не вибирав файл конфлікту злиття, як тільки я зробив це, що все пішло добре
pal4life

2
Мені довелося натиснути на пункт "Незаконені зміни" у списку комісій, перш ніж він був поземелений.
Міхей Золту

11

Я використовую SourceTree разом з TortoiseMerge / Diff, який є дуже простим і зручним інструментом для розлиття / злиття.

Якщо ви також хочете використовувати його, тоді:

  1. Отримайте окрему версію TortoiseMerge / Diff (досить стару, оскільки вона не постачається окремо з версії 1.6.7 TortosieSVN, тобто з липня 2011 року). Посилання та деталі у цій відповіді .

  2. Розпакуйте TortoiseIDiff.exeі TortoiseMerge.exeдо будь-якої папки (c:\Program Files (x86)\Atlassian\SourceTree\extras\ в моєму випадку).

  3. У SourceTree відкрито Tools > Options > Diff > External Diff / Merge. ВиберітьTortoiseMerge обидва спадні списки.

  4. Натисніть OKта вкажіть SourceTree на своє місцезнаходження TortoiseIDiff.exeта TortoiseMerge.exe.

Після цього можна вибрати Resolve Conflicts > Launch External Merge Tool з контекстного меню кожен конфліктуючий файл у вашому локальному сховищі. Це відкриє TortoiseMerge, де ви зможете легко впоратися з усіма конфліктами. Після завершення просто закрийте TortoiseMerge (вам навіть не потрібно зберігати зміни, це, мабуть, буде зроблено автоматично), і через кілька секунд SourceTree повинен виправити це витончено.

Єдина проблема полягає в тому, що вона автоматично створює резервну копію, навіть якщо правильна опція не встановлена .


4

Коли меню Resolve Conflicts-> Content Content вимкнено, це може бути у списку файлів, що очікують. Нам потрібно вибрати параметр "Конфліктовані файли" зі спадного меню (вгорі)

сподіваюся, що це допомагає

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.