Який найкращий візуальний інструмент для злиття для Git? [зачинено]


599

Який найкращий інструмент для перегляду та редагування об’єднання в Git? Я хотів би отримати тривимірний вид злиття з "моїм", "їхнім" і "предком" на окремих панелях і четвертим "вихідним" панелем.

Крім того, інструкції щодо використання цього інструменту були б чудовими. (Я досі не зрозумів, як запустити kdiff3 таким чином, щоб він не давав мені помилки.)

Моя ОС - Ubuntu.


15
"Але зараз це не дозволено" так, саме тому я зараз ненавиджу stackoverflow. Без цих питань занадто сухо і нудно.
István Ujj-Mészáros

17
Чи є сайт stackexchange, на якому цей тип питань дозволений? Якщо ні, то повинні бути ..
fzzylogic

16
Здається, настав час нового переповнення стека, де такі запитання дозволені. Зрозуміло, що стільки заявлених запитань цінні для багатьох людей, що закривати їх просто нерозумно. Думаю, ви перебрали бюрократизм. Як щодо того, як ви зробите опитування з цього питання і подивіться, чого хочуть ваші "клієнти"; P
Piotr Owsiak


6
Проблема: softwarerecs марний, оскільки експерти тут, а не там.
reinierpost

Відповіді:


337

Meld - це вільний, відкритий і крос-платформенний (UNIX / Linux, OSX, Windows) інструмент розлиття / злиття.

Ось як його встановити:


53
кого турбує ОС, яку використовує оригінальний автор? - питання досить загальне, щоб зацікавити всіх, хто його шукає. І тристороння різниця - це коли ви насправді бачите 4 панелі з тестом; merge-base / local / remote / результат
Євген

16
meldвтомлює складні відмінності, можливість вибору варіантів на зразок chose b for all unresolved conflictsнабагато краще, ніж необхідність натискати вручну правильну стрілку для кожної групи meld. Крім того, можливість об'єднання в конкретний вихідний файл, а не редагування вхідних файлів на місці, є неоціненним фактором для резервного копіювання невдалої нервової системи.
Марк Бут

3
У @naxa Meld тепер встановлено програму Windows: code.google.com/p/meld-installer
Роман

6
kdiff3 дозволяє вам бачити 4 перегляди, meld дозволяє лише 3 перегляди. Meld не є справжнім інструментом злиття, це різний інструмент, оскільки не відображає подання базової версії.
Акіра Ямамото

4
Мель жахлива, особливо для злиття. Він не має можливості "автоматичної передачі безконфліктних змін", що робить кожне злиття жахливо болючим.
Серін

91

Ви можете налаштувати власний інструмент злиття для використання з " git mergetool".

Приклад:

  git config --global merge.tool p4merge
  git config --global mergetool.p4merge.cmd p4merge '$BASE $LOCAL $REMOTE $MERGED'
  git config --global mergetool.p4merge.trustExitCode false

І поки ви перебуваєте в ньому, ви також можете встановити його як "difftool" для " git difftool":

  git config --global diff.tool p4merge
  git config --global difftool.p4merge.cmd p4merge '$LOCAL $REMOTE'

Зауважте, що в Unix / Linux ви не хочете, $BASEщоб ваш сімейний оболонку розбирався як змінну - він фактично повинен з’являтися у вашому файлі ~ / .gitconfig, щоб це працювало.


10
Зауважте, що оскільки p4merge є (зараз) одним з офіційно підтримуваних git mergetools, не слід мати необхідності спілкуватися з інструментом. .cmd змінної більше.
Метт Бал

2
Переконайтеся , що ви використовуєте правильну цитату: stackoverflow.com/a/1217994/3543437
kayleeFrye_onDeck

64

Більше Порівняння 3 , моя улюблена, має функцію злиття в Pro видання . Хороша річ злиття - це те, що він дозволяє вам бачити всі 4 види: базовий, лівий, правий і об'єднаний результат. Це дещо менш візуально, ніж P4V, але набагато більше, ніж WinDiff. Він інтегрується з багатьма джерелами управління і працює в Windows / Linux. Він має багато функцій, таких як вдосконалені правила, видання, ручне вирівнювання ...

Візуальний клієнт Perforce ( P4V ) - це безкоштовний інструмент, який надає один із найбільш явних інтерфейсів для об'єднання (див. Деякі скріншоти ). Працює на всіх основних платформах. Моє головне невдоволення цим інструментом - це його різновид інтерфейсу "лише для читання" . Ви не можете редагувати файли вручну і ви не можете вирівняти їх вручну.

PS: P4Merge включений до P4V. Перфорс намагається трохи важко дістати свій інструмент без клієнта.

SourceGear Diff / Merge може бути моїм другим безкоштовним вибором інструменту. Перевірте, чи знімаються екрани злиття,і ви побачите, що він має принаймні 3 перегляди.


Meld - це новіший безкоштовний інструмент, який я вважаю за краще SourceGear Diff / Merge : тепер він також працює на більшості платформ (Windows / Linux / Mac) із чіткою перевагою в тому, що він підтримує деякий контроль джерела, наприклад, Git . Таким чином, ви можете мати деякі історії, які відрізняються від усіх файлів набагато простіше. Перегляд злиття (див. Скріншот ) має лише 3 панелі, як і SourceGear Diff / Merge . Це ускладнює дещо складніше у складних випадках.

PS: Якщо один інструмент на один день підтримує злиття 5 поглядів , це справді буде приголомшливо, тому що якщо ви вибираєте вишні в Git, у вас дійсно не одна база, а два. Дві основи, дві зміни та одна в результаті злиття.


7
Perforce Merge - це чудово. Він має інструмент злиття 4 панелей, який справді допомагає: Ваш, Їх, Загальна база, Новий
Гал


5
Ви можете налаштувати лише P4Merge без іншої сили.
Дірк Бестер

6
Остання версія p4merge не має інтерфейсу "лише для читання". Ви можете редагувати об'єднаний файл на нижній панелі.
Ян Ні-Льюїс

1
Це дійсно чудова відповідь та дискусія. Дякую, що поділились!
Марк Добрий

44

Я чую хороші речі про kdiff3.


4
+1: kdiff3 набагато перевершує meld, а також підтримується git.
Марк Бут

3
kdiff3має набагато більше функцій, але meldмає кращий інтерфейс користувача. На мою думку, meldкраще для легкого злиття там, де функцій, що надаються meld, достатньо. Не забудьте також спробувати diffuse.
Mikko Rantalainen

kdiff3 дозволяє вам бачити 4 перегляди, meld дозволяє лише 3 перегляди. Meld не є справжнім інструментом злиття, це різний інструмент, оскільки не відображає подання базової версії.
Акіра Ямамото

43

Мій улюблений інструмент візуального злиття - SourceGear DiffMerge

  • Це безкоштовно.
  • Крос-платформа (Windows, OS X та Linux).
  • Чистий візуальний інтерфейс користувача
  • Усі різні функції, які ви очікували (Diff, Merge, Folder Diff).
  • Інтерфейс командного рядка.
  • Використовувані комбінації клавіш.

Користувацький інтерфейс


3
як налаштувати його на роботу з git?
Райан Лунді


2
Дякую за те, що ти мені це представив !! : D Цей інструмент чистий і вимагає менше часу для встановлення та роботи з тим, як розчинити. Я проводжу півгодини, намагаючись встановити мульду. Але цей я зробив за 5 хв !!
om39a

2
Примітка. Здається, що під час розмежування немає функції тристороннього злиття. Я відмовляюся від нього, пробуючи його через пару тижнів з цієї причини
StormeHawke

Це приємний інструмент, а також може порівнювати папки. Проблема в тому, що вона трохи повільна (MacBookPro 15 2014, MacOS Catalina)
emKaroly

33

vimdiff

Після того, як ви навчилися vim (і IMHO, який слід), vimdiff - це ще одна прекрасна маленька ортогональна концепція, яку потрібно вивчити. Щоб отримати допомогу в режимі он-лайн vim:

:help vimdiff 

Це питання стосується того, як його використовувати: Як використовувати vimdiff для вирішення конфлікту?

введіть тут опис зображення

Якщо ви застрягли в темному віці використання миші, а файли, які ви об’єднуєте, не дуже великі, я рекомендую meld.


<3 vimdiff, я не можу зрозуміти, як переконати svn дозволити мені використовувати його як інструмент "об'єднання".
Клокоп

gvimdiff також добре працює для цієї мети.
new123456

2
Використання плагіна-втікача робить це ще простіше! vimcasts.org/episodes/…
Ерік Веструп

Якби тільки існував спосіб чітко побачити різницю між локальним / базовим та базовим / віддаленим.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

24

Ви можете спробувати P4Merge .

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

Особливості:

  • Виділіть та відредагуйте відмінності текстових файлів
  • Виберіть, щоб включити або проігнорувати закінчення рядків або пробіли
  • Розпізнайте звичайні конвенції для Windows (CRLF), Mac (CR) та Unix (LF)
  • Використовуйте параметри командного рядка та запускайте програми, що не належать до Perforce
  • Відображати номери рядків при порівнянні та об'єднанні файлів
  • Виключіть модифіковані, унікальні або незмінені файли
  • Фільтруйте файли за іменем або розширенням
  • Упорядковуйте модифіковані об’єкти у звичній ієрархії файлів / папок
  • Порівняйте формати JPEG, GIF, TIFF, BMP та інших файлів
  • Розширення за допомогою API Qt
  • Накладення зображень або відображення поруч
  • Виділіть відмінності на накладених зображеннях

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


Виправлення посилання perforce.com/downloads/helix#clients
Al-Mothafar

Почала використовувати його сьогодні і це досить інтуїтивно.
Ресурс

22

IntelliJ IDEA має складний інструмент вирішення конфліктів з магічною паличкою Resolve, що значно спрощує злиття:

Джерело: https://blog.jetbrains.com/dotnet/2017/03/13/rider-eap-update-version-control-database-editor-improvements/


2
Інструмент злиття ідеї просто геніальний. він навіть доступний у виданні спільноти Idea, що означає, що ви можете використовувати його безкоштовно як розширений інструмент злиття - це те, що я роблю (у більшості випадків я використовую VSCode, де я працюю, і я використовую Idea для жорстких випадків злиття). VSCode також добре справляється, а іноді навіть краще, ніж Ідея. але для важких випадків їх 3-
godblessstrawberry

Я ненавиджу, як смужка прокрутки "файл літній" НЕ разом! Основна причина, що мені подобається дифузна!
Антоній

16

Дифуз - мій улюблений, але, звичайно, я упереджений. :-) Це дуже просто у використанні:

$ diffuse "mine" "output" "theirs"

Diffuse - це невеликий і простий інструмент злиття тексту, написаний на Python. За допомогою програми Diffuse ви можете легко об'єднати, відредагувати та переглянути зміни в коді. Дифуз - це безкоштовне програмне забезпечення.


2
Мені дуже подобається дифузний, і я не упереджений.
jturcotte

2
@Derrick Moser: diffuseвиглядає дуже приємно. Я просто спробував це зараз, і він краще відрізнявся, ніж kdiff3. Але я намагаюся використовувати його, git mergetoolі він відкриває 4 файли поруч (локальний, результат злиття, віддалений, базовий), і мій екран не досить широкий для цього. Мені довелося багато горизонтальної прокрутки. kdiff3 показує лише 3 поруч та результат у нижній половині вікна.
yairchu

diffuse має деякі додаткові варіанти злиття порівняно з meld (дозволяє приєднати обидві версії, а не вибрати одну з них).
Audrius Meskauskas

дифузний працює з вікна на вікнах, для порівняння 2 папок, з CVS repo, з Git repo, злиття конфліктів git merge. Дифузні файли розкриття відкриваються на вкладках в одному вікні. Я перейшов на дифузний (після використання ediff emacs (занадто багато функцій, корисних у 90-х))> vimdiff (складні натискання клавіш)> p4merge> araxis (proprietry)> meld (занадто повільно), tkdiff (тільки cvs)> kdiff3 (добре , хороший режим ігнорування функцій)> winmerge (хороший)> дифузний (швидкий, портативний, працює як очікувалося)) перший раз, коли я спробував дифузно.
мош

Як змінити мову GUI в Diffuse?
зач


9

Ви можете змінити інструмент, який використовує git mergetool, передавши git mergetool -t=<tool>або --tool=<tool>. Щоб змінити типовий (від vimdiff), використовуйте git config merge.tool <tool>.



6

Тож для злиття git можна спробувати:

  • DiffMerge для візуального порівняння та об’єднання файлів у Windows, OS X та Linux.

    DiffMerge

  • Meld , це візуальний інструмент для розрізнення та злиття.

    Meld - це візуальний інструмент розрізнення та злиття

  • KDiff3 , програма для рознесення та злиття), яка порівнює або об'єднує 2 або 3 текстові файли / dirs.
  • opendiff(частина інструментів Xcode на macOS), утиліта командного рядка, яка запускає додаток FileMerge з терміналу для графічного порівняння файлів або каталогів, включаючи об'єднання .

2
git config --global merge.tool opendiffнайкраще працював для мене
Джеймс Метью Мадгетт

5

Я спробував багато згаданих тут інструментів, і жоден з них не був таким, що я шукав.

Особисто я знайшов Atom чудовим інструментом для візуалізації відмінностей та вирішення / злиття конфліктів.

Що стосується злиття, то тут немає трьох переглядів, але все це поєднується в один із кольоровим виділенням для кожної версії. Ви можете редагувати код безпосередньо, або є кнопки, щоб використовувати будь-яку версію фрагмента, який ви хочете.

Я навіть не використовую його як редактор або IDE, лише для роботи з git. Чистий користувальницький інтерфейс і дуже прямий, плюс він налаштовується дуже легко.

  • Ви можете запустити його з командного рядка і передати один файл, який ви хочете відкрити, або додати свою папку проекту (git repo).

    • Я також рекомендую керівнику проектів як дуже зручному способу навігації між проектами, не заповнюючи подання з дерева.
  • Єдина проблема, з якою я стикався, - це оновлення - при роботі з великими атомами сховищ можна повільно оновлювати зміни, які ви вносите поза ним. Я завжди завжди закриваю її, коли закінчу, а потім знову відкриваю, коли хочу переглянути свої зміни / зробити знову. Ви також можете перезавантажити вікно за допомогою ctrl + shift + f5, що займає лише секунду.

І це безкоштовно, звичайно.


3

Я використовую різні інструменти для злиття та порівняння:

git config --global diff.tool diffuse
git config --global merge.tool kdiff3

Кулак можна назвати:

git difftool [BRANCH] -- [FILE or DIR]

Другий називається при використанні git mergetool.


2

Ви можете встановити програму ECMerge diff / merge на ваші Linux, Mac чи Windows. Він заздалегідь налаштований у Git, тому просто використання git mergetoolзробить роботу.


2

Якщо ви використовуєте візуальну студію , вбудований інструмент Team Explorer - це дуже приємний інструмент для вирішення конфліктів git merge.


0

gitx http://gitx.frim.nl/

Деякі помилки під час роботи з великими наборами комісій, але відмінно підходять для перегляду змін та вибору різних змін на етапі, а потім здійснювати фіксацію.

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