OS X (или Xcode) поставляется с git 1.7.something, но после brew install git
(1.8.0) which git
продолжает возвращать старый /usr/bin/git
.
Вот что я получаю, когда сейчас выполняю команду $PATH:
/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin
Разве не должны домашние штучки иметь приоритет?
Кроме того, я понятия не имею, откуда это usr/local/git/bin
взялось в конце.
решение1
Понял. Ответ в твоем вопросе; brew устанавливает git в /usr/local/git/bin
(не /usr/local/bin
), но поскольку он находится после /usr/bin
в твоем пути, ты устанавливаешь его первым. Мой комментарий which -a git
должен был направить тебя в этом направлении.
решение2
Я тоже столкнулся с этой проблемой.
После установки git через homebrew, если вы запустите brew doctor
его, он предупредит вас, что, как Джо упомянул выше, система использует старый git, поскольку его место установки указано первым.
Но в том же предупреждении homebrew приводит код для исправления:
$ echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
решение3
Это часть моих привычек в Unix — иметь ~/bin
каталог, который я помещаю в начало моего PATH
. Это один из первых фрагментов в моем .bashrc
:
case ":$PATH:" in
*:$HOME/bin:*) ;; # do nothing if $PATH already contains $HOME/bin
*) PATH=$HOME/bin:$PATH ;; # in every other case, add it to the front
esac
При этом можно выборочно сделать так, чтобы только версия, управляемая Homebrew, git
имела приоритет над системной версией (вместокаждыйуправляемый Homebrew двоичный файл) и просто для ваших сеансов оболочки (вместовсепрограммы, запускаемые откуда угодно, включая программы с графическим интерфейсом), так же просто, как создать на них символическую ссылку:
ln -s /usr/local/bin/git ~/bin/git