Как сделать 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.