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

У Gitx есть отличный просмотрщик различий, как мне сделать git автоматически pipe git diff в gitx?

Я попытался установить git config diff.external в оболочку script, которая выглядит так:

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

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

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

Ответы

Ответ 1

как sigjuice говорит там. Только тот noobs (как я сейчас) должен знать, как "подключить" git к его использованию. Вот что я сделал

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

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

Ответ 2

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

$git diffftool -t opendiff #hash

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

Ответ 3

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

opendiff $2 $5

Ответ 4

Я сделал это для слияния 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 * tools через сравнение.

После того, как это настроено, необходимо добавить следующие строки в ~/.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. Похоже, что "путь =" не нужен, но он работает.

Удачи.

Ответ 5

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

#!/bin/bash

result=$(git diff [email protected])

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

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

Ответ 6

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

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

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

git diff | gitx

Ответ 7

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