Переопределить мерзавец из Xcode с домашней версией

Я установил XCode и, следовательно, Git там. Так как я хочу иметь более новую версию git, я установил ее с помощью homebrew.

Но доморощенная версия git никогда не вызывается, так как мой PATH выглядит так

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

что означает /usr/bin/git всегда вызывается раньше /usr/local/bin/git,

Есть ли способ изменить это без изменения PATH?

3 ответа

Решение

XCode фактически использует GIT, который хранится в /Applications/Xcode.app/Contents/Developer/usr/bin, Эта же версия GIT устанавливается в /usr/bin когда вы установили инструменты командной строки как часть установки XCode. Таким образом, вы не сможете изменить то, что использует Xcode (если только вы не захотите взломать содержимое пакета Xcode). Если из терминального приложения вы хотите использовать GIT, установленный в homebrew, у вас есть два варианта:

  1. Ссылка GIT с полным путем как /usr/local/bin/git ... Для этого случая вы можете создать псевдоним как alias mgit=/usr/local/bin/git а затем использовать mgit ... из терминала
  2. Изменить путь как PATH=/usr/local/bin:$PATH либо в вашем .bashrc или же .zshrc если вы используете файл zsh (или каждый раз, когда запускаете терминал в командной строке).

Так как Xcode жестко запрограммировал свою собственную версию git, которая установлена ​​на /Applications/Xcode.app/Contents/Developer/usr/bin/gitМне удалось использовать эту работу вокруг трюка:

  1. перейдите в каталог Xcode:

    cd /Applications/Xcode.app/Contents/Developer/usr/bin

  2. переименуйте git Xcode как это:

    sudo mv ./git ./git-xcode-usr-bin

  3. свяжите мой собственный git, который установлен через homebrew:

    sudo ln -s /usr/local/bin/git ./git

И я сделал то же самое с /usr/bin/git

Это будет фактически ссылка /usr/local/Cellar/git/1.8.0/bin/git (потому что я использую git 1.8.0 в настоящее время)

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

Я делаю это так, потому что я хочу решить свою проблему здесь 13177203. И после долгого поиска StackOverFlow я наконец-то получил это решение.

Если вы используете fish shell вместо bash, вы можете указать предпочитаемый двоичный файл git, добавив следующее в ~/.config/fish/config.fish,

function git
  /usr/local/bin/git $argv; 
end
Другие вопросы по тегам