Как сделать так, чтобы git diff использовал gitx --diff на OS X
У Gitx есть отличный просмотрщик различий, как мне сделать так, чтобы git автоматически отправлял git diff в gitx?
Я попытался установить git config diff.external к сценарию оболочки, который выглядит следующим образом:
git diff "$2" "$5" | gitx
Однако, это только открывает все отдельные файлы в нескольких окнах gitx, и это действительно портит имена файлов (изменяет их все на tmp файлы с сумасшедшими именами).
У кого-нибудь есть лучшее решение?
7 ответов
Как там говорит sigjuice. Только нубы (как и я сейчас) должны знать, как "подключить" git, чтобы использовать его. Вот что я сделал
echo 'opendiff $2 $5' > ~/opendiff-git.sh
chmod a+x ~/opendiff-git.sh
git config --global diff.external ~/opendiff-git.sh
и теперь все "git diff любой" должен открыть FileMerge.app ...
Я не совсем уверен, что это то, что вы хотите, но для нас на Mac это, безусловно, удобно и в некоторой степени связано, вы можете попробовать:
$ git difftool -t opendifF#hash
Это открывает diff в программе opendiff, что я считаю очень полезным. Это гораздо проще, чем создать сценарий оболочки и провести все ваши сравнения через новый внешний diff. Если вы не на Mac, вы, вероятно, можете изменить opendiff на ваш любимый доступный инструмент сравнения...
Мне жаль, что на самом деле это не отвечает на ваш вопрос о gitx. Я даже не уверен, может ли gitx функционировать как универсальный инструмент сравнения. Вам может понравиться FileMerge, инструмент слияния / сравнения, включенный в установку XCode. Существует скрипт с именем opendiff, который может запустить его для вас. Просто создайте скрипт со следующей строкой и укажите на него diff.external.
opendiff $2 $5
Этот вопрос может быть немного старым, но я только что нашел что-то, что работает для меня.
Откройте приложение GitX (v.7), выберите меню "GitX", затем "Включить использование терминала"
В терминальной трубе diff к gitx через:
git diff | gitx
Я сделал это для слияния с 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"
Это перенаправляет все 2-сторонние и 3-сторонние различия через Araxis Merge. Кажется, что "путь =" не должен быть необходимым, но это работает.
Удачи.
Я использую этот скрипт, который я назвал git-diffx
и поставить на моем пути:
#!/bin/bash
result=$(git diff $@)
if [ "$result" ]; then
echo "$result" | gitx
fi
Тогда вместо git diff ...
, ты звонишь git diffx ...
,
Я задал похожий вопрос некоторое время назад. Этот ответ может помочь вам. Там есть пара вопросов, но один из них связан с открытием diff-представления в чем-то отличном от FileMerge.