Как заставить git diff использовать gitx --diff на OS X - PullRequest
13 голосов
/ 10 апреля 2009

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

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

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

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

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

Ответы [ 7 ]

18 голосов
/ 09 августа 2009

как 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 ...

5 голосов
/ 21 апреля 2010

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

$ git difftool -t opendiff # hash

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

3 голосов
/ 10 апреля 2009

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

opendiff $2 $5
2 голосов
/ 12 января 2012

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

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

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

git diff | gitx

2 голосов
/ 15 января 2011

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

#!/bin/bash

result=$(git diff $@)

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

Тогда вместо git diff ... вы звоните git diffx ....

2 голосов
/ 10 апреля 2009

Я сделал это для слияния с 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. Кажется, что «путь =» не должен быть необходимым, но он работает.

Удачи.

1 голос
/ 10 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...