13

Я сталкиваюсь с очень странной проблемой, когда пытаюсь использовать последнюю версию git, которую я только что установил через homebrew. which git указывает мне на установку homebrew, но вызов git возвращает исходную версию, установленную с OS X.

Я проверил сначала, чтобы увидеть оригинальную версию, на которой я был.

[user@home ~]$ git --version
git version 1.8.5.2 (Apple Git-48)

Затем я пошел в доморощенный, чтобы установить последнюю версию.

[user@home ~]$ brew install git
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/git-2.0.0.mavericks.bottle.2.tar.gz
######################################################################## 100.0%
==> Pouring git-2.0.0.mavericks.bottle.2.tar.gz
==> Caveats
The OS X keychain credential helper has been installed to:
  /usr/local/bin/git-credential-osxkeychain

The 'contrib' directory has been installed to:
  /usr/local/share/git-core/contrib

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completion has been installed to:
  /usr/local/share/zsh/site-functions
==> Summary
  /usr/local/Cellar/git/2.0.0: 1324 files, 31M

Похоже, это сработало! Убедитесь, что он указывает на правильный мерзавец

[user@home ~]$ which git
/usr/local/bin/git

Должно быть хорошо, верно? Не так быстро

[user@home ~]$ git --version
git version 1.8.5.2 (Apple Git-48)

Это странно. Я действительно указываю на правильный мерзавец?

[user@home ~]$ ls -l /usr/local/bin/git
lrwxr-xr-x  1 user  group  27 Jul  3 15:54 /usr/local/bin/git -> ../Cellar/git/2.0.0/bin/git

Конечно, похоже на это. Работает когда я вызываю это вручную

[user@home ~]$ /usr/local/Cellar/git/2.0.0/bin/git --version
git version 2.0.0

Но не как git

[user@home ~]$ which git
/usr/local/bin/git
[user@home ~]$ git --version
git version 1.8.5.2 (Apple Git-48)

Любые идеи относительно того, что может быть причиной этого?

РЕДАКТИРОВАТЬ: Решено. source .bashrc это исправил. Все еще любопытно, почему, which возвратил бы мне правильный исполняемый файл, но это не будет вызвано, хотя, если кто-то может объяснить это.

5 ответов5

21

Оболочки поддерживают кэш путей, где исполняемые файлы были найдены в $PATH . Поэтому он кэшировал /usr/bin/git а не /usr/local/bin/git , потому что последний не существовал на момент запуска вашей оболочки. Запуск hash -r в Bash из вашего текущего терминала очистит этот кеш, тогда первый экземпляр, найденный в $PATH должен быть тем, который выполняется.

5

У меня точно такая же проблема. Вот мое решение.

brew uninstall git
# make sure everything is alright, maybe brew will give you some hint
brew doctor
brew update  
brew install git
# magic happen, brew will give you hint /usr/bin occurs before /usr/local/bin
# and recommend you run following command
brew doctor
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile

После этого вы закончите, но вы не сможете увидеть никаких изменений при запуске git --version . Просто выйдите и снова войдите в систему, снова запустите git --version .

0

У меня та же проблема. Я просто перезапустил свой терминал.

-1

Моя проблема была в том, что у меня было установлено приложение Mac GitHub. /usr/local/bin/git указывал на версию git приложения, а не на версию Homebrew. Удаление приложения GitHub устранило проблему для меня.

-1

При использовании homebrew для обновления git на вашем компьютере, выполните следующие действия:

brew doctor

Исправьте предложенные проблемы

brew update если доступна более новая версия homebrew

brew install git для загрузки и установки последней версии git

brew doctor даст вам знать, что

Предупреждение: у вас есть несвязанные кеги в вашем подвале

выполнение brew link git приведет к ошибке

Ошибка: не удалось символическую ссылку bin/git

Цель /usr /local /bin/git уже существует. Вы можете удалить это:

rm '/usr /local /bin/git'

brew link --overwrite git чтобы перезаписать символическую ссылку и указать на установленный git brew.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .