Самостоятельная установка git не будет иметь приоритет над версией системы (в / usr / bin /)

10

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в конце.

o_o_o--
источник
Вы проверили, что git находится в / usr / local / bin?
Джо Бэйн
Ага. ls /usr/local/binшоу gitесть. Brew также подтверждает, что он установлен. Я даже запустил деинсталлятор git ( brew uninstallиспользуя и ту, которая поставляется с официальной загрузкой git) и переделал brew install git. Я продолжаю получать which git = = /usr/bin/git".
o_o_o--
2
Беги, which -a gitчтобы увидеть, находит ли он это вообще.
Джо Бэйн

Ответы:

7

Понял. Ответ в вашем вопросе; brew устанавливает git в /usr/local/git/bin(не /usr/local/bin), но так как это после /usr/binвашего пути, вы получите его первым. Мой комментарий which -a gitдолжен был указать вам в этом направлении.

Джо Бэйн
источник
1
Беги ls -l /usr/local/bin/gitтоже. Могу поспорить, что это символическая ссылка на /usr/bin/git.
Джо Бэйн
Ох, и, /usr/local/git/binкажется, это то, где официальный установщик помещает это тоже.
Джо Бэйн
Вы должны посмотреть /etc/pathsи на то /etc/paths.dже самое.
Джо Бэйн
1
Вот интересный поворот событий: which -a gitвозвращается /usr/local/bin/git; /usr/bin/git; /usr/local/bin/git. Поэтому я переименовал старый Git usr/bin/git_oldи убрал его с дороги. Теперь git --versionвозвращает 1.8, доказывая, что brew успешно установил git. - Опять я переименовал /usr/bin/gitв его первоначальное имя ... и вдруг он работает правильно! Я не знаю почему или как, но переименование /usr/bin/gitи запуск git однажды, похоже, решили проблему. Кто знает в чем корень проблемы. В любом случае, спасибо :)
o_o_o--
Странно. Рад, что ты и сейчас бегаешь, по крайней мере.
Джо Бэйн
3

Я также столкнулся с этой проблемой.

После установки git через homebrew, если вы запустите brew doctorего, он предупредит вас, что, как упоминал Джо, система запускает старый git, потому что его место установки на первом месте.

Но, в том же предупреждении, доморощенный дает код, чтобы исправить это:

$ echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
chorbs
источник
0

Это было частью моих привычек 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
Аристотель Пагальцис
источник