Как заставить git diff использовать gitx --diff в OS X

В Gitx есть отличная программа просмотра различий, как мне сделать так, чтобы git автоматически перенаправлял git diff любой в gitx?

Я попытался установить git config diff.external на сценарий оболочки, который выглядит следующим образом:

git diff "$2" "$5" | gitx

Однако это открывает только все отдельные файлы в нескольких окнах gitx, и это действительно портит имена файлов (меняет их все на файлы tmp с сумасшедшими именами).

Есть ли у кого-нибудь лучшее решение?


person BJ Clark    schedule 10.04.2009    source источник


Ответы (7)


как там говорит сигджус. Только этим новичкам (как и я сейчас) нужно знать, как «подключить» git, чтобы использовать его. Вот что я сделал

echo 'opendiff $2 $5' > ~/opendiff-git.sh
chmod a+x ~/opendiff-git.sh
git config --global diff.external ~/opendiff-git.sh 

и теперь все "git diff something" должны открывать FileMerge.app ...

person Wolfram Kriesing    schedule 09.08.2009
comment
opendiff $ 2 $ 5 -merge $ 5 Работает с путями, в которых есть пробелы. ⌘-s сохраняет изменения из FileMerge обратно в локальный файл. - person Justin Anderson; 10.04.2011
comment
Как мне отменить это изменение (если, скажем, мне надоел opendiff и я хотел вернуться к инструменту встроенного сравнения)? - person thewillcole; 14.02.2012
comment
@ Уилл Коул: git config --global --unset diff.external - person AlcubierreDrive; 08.03.2012

Я не совсем уверен, что это то, что вам нужно, но для нас на Mac это все равно удобно и в чем-то связано, вы можете попробовать:

$ git difftool -t opendiff #hash

Это открывает diff в программе opendiff, которую я считаю очень полезной. Это намного проще, чем создать сценарий оболочки и заставить все ваши различия через новый внешний diff. Если у вас нет Mac, вы, вероятно, можете изменить opendiff на свой любимый доступный инструмент сравнения ...

person jonalv    schedule 21.04.2010
comment
сделайте это «git difftool…» (без тире) - person plindberg; 23.08.2010
comment
Похоже, вы не можете (-заменить opendiff на ваш любимый доступный инструмент сравнения ...), -t mysupertool вызывает Неизвестный инструмент слияния mysupertool - person conny; 06.01.2011

Мне очень жаль, что это не отвечает на ваш вопрос о gitx. Я даже не уверен, может ли gitx работать как универсальный инструмент сравнения. Вам может понравиться FileMerge, инструмент слияния / сравнения, включенный в установку Xcode. Есть скрипт под названием opendiff, который может запустить его за вас. Просто создайте скрипт со следующей строкой и укажите на него diff.external.

opendiff $2 $5
person sigjuice    schedule 10.04.2009
comment
gitx - отличный универсальный инструмент сравнения - person Abram; 19.10.2018

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

Сначала я создал ~ / bin / git-diff-driver.sh и добавил к файлу разрешение на выполнение.


#!/bin/sh

/usr/local/bin/compare -title1:"$1 (repo version)" -title2:"$1 " -max "$2" "$5"

Araxis устанавливает инструменты интерфейса командной строки в / usr / local / bin. Инструмент сравнения - это их общий инструмент, а инструменты araxis * проходят через сравнение.

После этого необходимо добавить следующие строки в ~ / .gitconfig.


[merge]
    tool = araxismerge
[mergetool "araxismerge"]
    cmd = "/usr/local/bin/compare -3 -merge -wait $LOCAL $BASE $REMOTE $MERGED"
    path = /usr/local/bin/
[diff]
    external = "/Users/mark/bin/git-diff-driver.sh"

Это перенаправляет все двусторонние и трехсторонние различия через Araxis Merge. Кажется, что в «path =» нет необходимости, но он работает.

Удачи.

person Mark    schedule 10.04.2009

Я использую этот сценарий, который я назвал git-diffx и ввел в свой путь:

#!/bin/bash

result=$(git diff $@)

if [ "$result" ]; then
   echo "$result" | gitx
fi

Затем вместо git diff ... вы вызываете git diffx ....

person Douglas    schedule 15.01.2011

Этот вопрос может быть немного староват, но я только что нашел кое-что, что мне подходит.

Откройте приложение GitX (v.7), выберите меню «GitX», затем «Включить использование терминала».

В терминальной трубе diff до gitx через:

git diff | gitx

person tek_yogi    schedule 11.01.2012

Некоторое время назад я задал аналогичный вопрос. Этот ответ может вам помочь. Там есть пара вопросов, но один из них связан с открытием просмотра различий не в FileMerge, а в другом.

person Rob Wilkerson    schedule 10.04.2009