четверг, 26 февраля 2015 г.

Инструменты для работы с Git – KDiff3

Теперь установим и настроим KDiff3. Качаем тут. Устанавливаем

K0001

Я отключил то, что мне не нужно

K0002

Ставим в путь по умолчанию, далее его будем использовать в настройках

K0003

K0004

K0006

Ну и запустим для проверки

K0007

Все, работает. Жмем Cancel и настраиваем сперва KDiff3 на работу с Git. Для этого идем в настройки

K0008

Далее в Directory снимаем указанную галку. Это делается, чтобы KDiff не оставляла файлы с расширением .orig.

K0009

Теперь настраиваем confgi Git’a так:

[diff]
        tool = p4m
        tool = kdiff3


[difftool "p4m"]
        cmd = "p4merge.exe $LOCAL $REMOTE"

[difftool "kdiff3"]
        path = C:/Program Files/KDiff3/kdiff3.exe

[difftool]
        prompt = false
        keepBackup = false
        trustExitCode = false


[merge]
        tool = p4m
        tool = kdiff3

[mergetool]
        prompt = false
        keepBackup = false
        keepTemporaries = false

[mergetool "p4m"]
        cmd = "p4merge.exe $BASE $LOCAL $REMOTE $MERGED"
        trustExitCode = true
 

[mergetool "kdiff3"]
         path = C:/Program Files/KDiff3/kdiff3.exe

В данном конфиге у нас уже уже определены две внешние утилиты сравнения и слияния KDiff3 и P4Merge. В редакторе Far manager это выглядит так:

K0010

Ну и теперь проверяем все это в Git. Для этого даем команду

$ git difftool c258082 ffd6b37 --tool=kdiff3 --cc test.txt

K0011

И видим запустившееся окно утилиты KDiff3 без того чтобы Git задавал лишние вопросы (это мы настроили в конфиге).

K0012

И так сравнение с помощью KDiff3 работает. И кстати “мусора” (файла с расширением .orig) после выхода из KDiff3 не наблюдается.  Теперь проверяем слияние. Даем команды:

$ git merge newbranch
$ git mergetool --tool=kdiff3


K0013

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

K0014

Далее смотрим конфликт.

K0015

Разрешаем его, жмем сохранить и выходим из KDiff3

K0016

И благодаря нашим настройкам рабочий каталог остается без “мусора”, остается только сделать коммит, чтобы зафиксировать изменения.

Ну или дать команду

$ git merge --abort

Чтобы отменить слияние.

9 комментариев:

  1. $ git difftool c258082 ffd6b37 --tool=kdiff3 --cc test.txt
    fatal: ambiguous argument 'c258082': unknown revision or path not in the working tree.
    Use '--' to separate paths from revisions, like this:
    'git [...] -- [...]'

    ОтветитьУдалить
    Ответы
    1. При прочтении статей и воспроизведении примеров рекомендуется включать мозг

      Удалить
    2. Это связано с тем, что уважаемый аfftar им не пользовался во время написания данной статьи?

      Удалить
    3. Это связано с тем что вы тупо повторяете примеры не вникая в их суть.
      Ваша сударь тупость заключена в этом c258082 ffd6b37. Если бы вы понимали что это такое вы бы не задали изначальный вопрос.

      Удалить
    4. И кроме того, если бы вы знали английский, где собственно объясняется что не так вы сделали, то вы опять же не задали этот вопрос. Поэтому еще раз рекомендую включить мозг, ну или при отсутствии оного воспользоваться, допустим Google переводчиком и перевести во эту фразу: atal: ambiguous argument 'c258082': unknown revision or path not in the working tree.

      Удалить
  2. Извините за жесткие ответы, но когда тупят на ровном месте это вызывает сомнения в наличии мыслительных способностей хотя бы среднего уровня, достаточного чтобы разобраться в том то такое хэш коммита.

    ОтветитьУдалить
    Ответы
    1. Почему нельзя было сразу, не опускаясь до откровенного хамства, дать ответ человеку, который в 1й день пользования Git пытается понять, какие инструменты для этого нужны и не знает, что это за код 'c258082' и какое отношение они имеют к хешу коммита? Зачем было выдавать в себе агрошкольника?

      Или заменить в тексте примера $ git difftool xxxxxxx --tool=kdiff3 --cc test.txt
      с пометкой "годе xxxxxxx - это хеш коммита" Чтобы было сразу понятно. Мне задерживаться на этом было некогда всё остальное сработало, за что Огромное Вам спасибо.

      Вам я советую повзрослеть.

      Удалить
    2. Спасибо за совет. Он очень хорош. Я им воспользуюсь. Что такое хэши было объяснено почти в самом в самом начале блога, когда а я говорил про коммиты. И хэши это настолько очевидная вещь, тем более в данном примере, что меня не мало удивил ваш изначальный комментарий, в котором в самом же и содержался ответ на ваш вопрос, просто он был на английском языке. Поэтому я и порекомендовал включить мозг при воспроизведении примеров. К тому же 12 мая я только вернулся из штатов и меня плющил шифтинг поясов и ваш вопрос просто вызвал раздражение. Тем более если вы человек с бородой.

      Но за ваш совет спасибо большое. Я действительно был не прав в своей манере ответа. У меня такое иногда бывает еще. Я работаю над собой. Спасибо еще раз за ваше терпение.

      Удалить
  3. И ко всему прочему В САМОЙ ПЕРВОЙ СТАТЬЕ я объяснил что такое хэш коммита. Поэтому у меня вызвал раздражение ваш вопрос. Карл, в самой первой статье! Карл :)

    ОтветитьУдалить