Переопределить мерзавец из 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, у вас есть два варианта:
- Ссылка GIT с полным путем как
/usr/local/bin/git ...
Для этого случая вы можете создать псевдоним какalias mgit=/usr/local/bin/git
а затем использоватьmgit ...
из терминала - Изменить путь как
PATH=/usr/local/bin:$PATH
либо в вашем.bashrc
или же.zshrc
если вы используете файл zsh (или каждый раз, когда запускаете терминал в командной строке).
Так как Xcode жестко запрограммировал свою собственную версию git, которая установлена на /Applications/Xcode.app/Contents/Developer/usr/bin/git
Мне удалось использовать эту работу вокруг трюка:
перейдите в каталог Xcode:
cd /Applications/Xcode.app/Contents/Developer/usr/bin
переименуйте git Xcode как это:
sudo mv ./git ./git-xcode-usr-bin
свяжите мой собственный 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