Встановлення git в домашній мові не матиме переваги перед версією системи (в / usr / bin /)


10

OS X (або Xcode) поставляється в комплекті з git 1.7.щось, але після 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в кінці.


Ви перевірили, що git насправді в / usr / local / bin?
Джо Бейн

так. ls /usr/local/binшоу gitє. Brew також підтверджує, що він встановлений. Я навіть запустив деінсталятор git (як brew uninstallі використовуючи той, який постачається з офіційним завантаженням git), так і redid brew install git. Я продовжую отримувати which git = = /usr/bin/git".
o_o_o--

2
Біжи, which -a gitщоб побачити, чи взагалі його знаходять.
Джо Бейн

Відповіді:


7

Зрозумів. Відповідь у вашому запитанні; brew встановлює git до /usr/local/git/bin(not /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

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), і лише перед сеансами оболонки (замість усіх програм, запущених з будь-якого місця, включаючи програми GUI), є настільки ж просто, як символізувати його:

ln -s /usr/local/bin/git ~/bin/git
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.