Не могу использовать git с установленным доморощенным

16

Я сталкиваюсь с очень странной проблемой, когда пытаюсь использовать последнюю версию 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бы вернуть мне правильный исполняемый файл, но он не был бы вызван, хотя, если кто-то может объяснить это.

Мэтт Стоун
источник
Не знаю точно, в чем проблема, но, похоже, вам захочется взглянуть на текущее значение $PATH.
Зев Айзенберг
3
если вы хотите увидеть все версии git, которые вы установили, используйте -> which -a git - (который git просто возвращает вам путь первого найденного в вашей переменной PATH), чтобы увидеть, какие пути у вас есть в вашем PATH, -> echo $ PATH
konqui

Ответы:

25

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

realgeek
источник
hash -rу меня сработало
цельнометаллический редуктор
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снова.

клык
источник
7
Достаточно открыть новое окно терминала. В качестве альтернативы можно также позвонить source ~/.bash_profile.
Даниэль Б
Эти шаги были именно тем, что мне было нужно, и они помогли мне настроить мою систему, используя последнюю версию git. Я также обнаружил другую копию git, которую я скачал с git-scm.com, поэтому я запустил скрипт uninstall.sh, чтобы удалить его. Сейчас у меня все хорошо, большое спасибо Фангу и Йенсу!
Майкл Шивер
Спасибо за шаги. Для меня я автоматически смог использовать git --version без выполнения последней команды echo.
Майкл Фултон
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.

Chekkan
источник
-1

Откройте свой терминал. Введите эту команду.

sudo nano /etc/paths

Затем скопируйте следующий путь в начало файла.

/usr/local/git/bin

Нажмите control + X и сохраните.

Проверьте git --version

Работает для меня.

Мистер пи
источник
Там нет такого файла git/bin. Вы имеете в виду bin/git? Кроме того, нет необходимости добавлять это к вашим путям - /usr/local/binуже там.
slhck