2012-06-04 1 views
22

У меня есть конфликты, так что я типа:KDiff3 не открывается с помощью команды mergetool

git mergetool 

Затем я получаю сообщение о том:

Хит возврата начать Merge Разрешение приспособление

Обычно, когда я это делаю, он открывает kdiff3, поэтому я могу объединить различия.

Теперь, когда я это делаю, он просто переходит к следующему файлу, а kdiff3 вообще не открывается.

I triple cheched my git config и мой системный путь, и все кажется идеальным. Файл конфигурации выглядит следующим образом:

[merge] 
    tool = kdiff3 
[mergetool "kdiff3"] 
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe 
[diff] 
    guitool = kdiff3 
[difftool "kdiff3"] 
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe 
[core] 
    editor = \"C:/Program Files (x86)/GitExtensions/GitExtensions.exe\" fileeditor autocrlf = true 
[user] 
    name = James Farrell 
    email = [email protected] 
[github] 
    user = whygosystems 
    token = 87d00c2e613b3a7c8c1be817b75b8a33 
[diff] 
    external = C:/Program Files (x86)/Git/cmd/git-diff-wrapper.sh 

У кого-нибудь есть идеи, что может быть неправильным?

У меня есть ощущение (хотя я мог бы быть неправильно, что это было проблемой, так как я установил новый GitHub окна клиента) ....

+0

У меня была эта проблема время от времени, и перезагрузка машины всегда помогала. Не знаю, почему. – eis

+0

@eis Спасибо, я перезагрузился, и это не помогло. – iKode

+1

Была такая же проблема, для меня это [обходной путь] (http://stackoverflow.com/a/15813064/1132850) помог. – PiQuer

ответ

5

Я не использовал мерзавца для этой цели на Windows, через некоторое время, но ваш файл конфигурации показывает некоторые интересные отличия re: программные строки.

[core] 
    editor = \"C:/Program Files (x86)/GitExtensions/GitExtensions.exe\" fileeditor autocrlf = true 

против

[difftool "kdiff3"] 
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe 

Я подозреваю, что там может быть какой-то вопрос с пробелами в имени программы. Попробуйте настроить сравнения/mergetool исполняемых путей к:

path = \"c:/Program Files (x86)/KDiff3/kdiff3.exe\" 
21

Я понимаю, что это старое, но и для будущих Googlers, KDiff3 также имеет опцию, где, если слияние тривиально, он будет решать это тихо и никогда даже не показывает окно.

У меня это случалось со мной в прошлом, так что это может случиться для вас. Я думаю, что этот параметр называется «Автосохранение и выход из слияния без конфликтов».

+3

Этот параметр действительно является самым жестоким, но он всегда срабатывает, потому что git называет 'kdiff3' флагом' --auto', поэтому он не помогает отключить параметр в kdiff3. Обходной путь см. В моем ответе на этот [аналогичный вопрос] (http://stackoverflow.com/a/15813064/1132850). – PiQuer

2

Опять же, для будущих Googlers:

Начиная с версии 2.48.02 (29 ноября 2014), Git Extensions начал распространение 64-разрядную версию kdiff3. (См. https://github.com/gitextensions/gitextensions/blob/master/GitUI/Resources/ChangeLog.md#version-24802-29-november-2014.)

Итак, если вы используете 32-разрядную ОС и установили установщик Git Extensions install kdiff3, ваш kdiff3 даже не будет запускаться сам по себе. Решение - загрузить 32-разрядную версию (http://sourceforge.net/projects/kdiff3/files/kdiff3/) и переустановить. Мне даже не нужно было сначала удалить 64-разрядную версию, так как программа установки просто перезаписала предыдущую установку.

0

Еще один ответ для будущих Googlers:

На самом деле, никакого внешнего инструмента объединения не запустится. Вопрос был подан в августе 2015 года: https://jira.atlassian.com/browse/SRCTREEWIN-3543