Я установил последнюю версию git (1.8.3), используя homebrew, но когда я набираю
git --version
в моем терминале он печатает:
git version 1.7.10.2 (Apple Git-33)
Что я должен сделать, чтобы заменить старую версию git новой?
Я установил последнюю версию git (1.8.3), используя homebrew, но когда я набираю
git --version
в моем терминале он печатает:
git version 1.7.10.2 (Apple Git-33)
Что я должен сделать, чтобы заменить старую версию git новой?
Ответы:
Спасибо всем за полезные ответы. В моем случае добавление
export PATH="/usr/local/bin:${PATH}"
в ~/.bash_profile
сопровождении
source ~/.bash_profile
решил проблему для моего пользователя.
/usr/local/bin
выше /usr/bin
в /etc/paths
.
brew doctor
диагностике проблемы
/etc/paths
. Определение только «экспорта» может оказаться недостаточным, если оно /usr/bin
имеет «приоритет» над /usr/local/bin
(от brew) ...
Хорошо, я готов серьезно относиться к scm.
$ git --version
git version 1.9.5 (Apple Git-50.3)
Нет, это не то, что я хотел. Я <3 доморощенный, поэтому:
$ brew install git
Все готово?
$ git --version
git version 1.9.5 (Apple Git-50.3)
Doh! (царапает голову)
$ which git
/usr/bin/git
Ах, мерзавец Apple находится в / usr / bin, так что он превосходит доморощенный. Что делать?
(A) Просто переименуйте бинарный файл Apple
(B) Пусть доморощенный человек имеет преимущество:
[редактировать экспорт PATH, например, в ~ / .zshrc (oh-my-zsh + iTerm2 FTW! / tangent)]
[в частности: переместить / usr / local / bin / git: before / usr / bin:]
... и / или (например, чтобы более широко позволить доморощенным вещам перевесить установку системы и иметь приоритет для всех оболочек и пользователей), также отредактируйте файл / etc / paths, [двигающийся / usr / local / bin выше / usr / bin ]
Но предполагая только самый простой / наименее инвазивный подход:
$ sudo mv /usr/bin/git /usr/bin/git-apple
Это сработало?
$ which git
/usr/local/bin/git
Пока все хорошо, теперь момент истины:
$ git --version
git version 2.2.1
w00t! :) Пора читать http://git-scm.com ! :)
which git
указанием на /usr/local/bin/git
это не сработало для меня. Чтобы решить эту проблему, мне пришлось удалить приложение GitHub Mac.
sudo mv /usr/bin/git /usr/bin/git-apple mv: rename /usr/bin/git to /usr/bin/git-apple: Operation not permitted
Все трюки, упомянутые здесь в нескольких ответах, больше не нужны в macOS Sierra & Mojave с последней версией Homebrew. Забудьте export PATH="..."
и модификации ~/.bash_profile
.
Вы просто делаете
brew install git
и вы сделали.
Для подтверждения откройте новое (!) Окно терминала и введите
git --version
brew link --overwrite git
работал для меня
После того, как вы установили последнюю версию git через brew ( brew install git
), запустите эту однострочную версию (как предложено brew doctor
), если ее там еще нет:
echo "export PATH=/usr/local/bin:$PATH" >> ~/.bash_profile
Затем выйдите из терминала и снова откройте его (перезапустите сеанс bash). Вы должны сделать это, даже если ваш PATH уже был корректным, поскольку ZSH и Bash кэшируют содержимое PATH (см. Документацию по встроенной команде hash
).
Это должно исправить вещи очень быстро.
Когда вы печатаете
git --version
в Terminal.app или в консоли, ваш комментарий к другому вопросу указал, что версией, которую он возвращает, является git в / usr / bin / git
Если вы установили Xcode 4.5 (и новее), введите
xcrun git --version
в Terminal.app или в консоли его версия - это git в комплекте приложений Xcode.
Если вы используете Homebrew для установки и обновления git, самое простое решение -
переименуйте исходное местоположение, переименовав его с помощью mv. Например
sudo mv / usr / bin / git / usr / bin / git-ORIGINAL
создайте программную ссылку, используя 'ln -s', на бинарный файл git, который вы установили с помощью Homebrew.
Обратите внимание, что MattDMo имеет лучшее решение в комментариях.
/usr/bin
, поскольку вполне возможно, что другие программы, о которых вы даже не знаете, зависят от капризов, связанных с конкретной версией. Самое простое решение, не двигая ничего, чтобы добавить /usr/local/bin
к вашему $PATH
переменному окружению перед тем /usr/bin
- IIRC, доморощенный устанавливается на/usr/local/bin
Вы должны переименовать оригинальный git в apple, /usr/bin/
например, в git-org, так /usr/bin
как обычно он находится /usr/local/bin
в вашем каталоге пути, где находится brew.
Так:
cd /usr/bin
sudo mv git git-org
и не забудьте связать варево мерзавца
brew link git
Это предполагает, что /usr/local/bin
находится в вашей $PATH
переменной среды. Если проблема не устранена, попробуйте запустить
brew doctor
и исправить проблемы, упомянутые там.
/usr/local/bin
(каталог установки homebrew, IIRC) $PATH
вперед, /usr/bin
вместо того, чтобы возиться с переименованием и резервным копированием и т. Д.
Установите мерзавца с завариванием, запустите это.
brew link --force git
Закройте и снова откройте терминал для запуска which git
.
brew link --overwrite git
сработало
Если вы устанавливаете git напрямую с git-scm.com и хотите использовать последнюю загруженную версию git вместо яблочной (старой) версии git.
/usr/local/bin/git
git --version
, если он вернет Apple старую версию git, перейдите нижеcd ~
(смените каталог на ваш домашний каталог)vi .bashrc
i
(чтобы вставить текст в редактор vi)export PATH.......
, нажмите ввод в верхней части экспорта и введите следующее: export PATH=/usr/local/:$PATH
(Будьте предельно осторожны с PATH
переменной, не путайте ее, иначе это вызовет проблемы для вашей ОС) (надеюсь, новый git должен быть установлен в /usr/local/git
):wq
(чтобы сохранить .bashrc
файл)git --version
(вы должны увидеть новую версию)Это зависит от того, откуда взялся ваш мерзавец. Например, XCode предлагает версию, которая, возможно, стоит на вашем пути.
Может быть, набрав
which git
покажет, где старый.
/usr/bin/git
...
Чтобы обновить что-либо с помощью Homebrew на OSX, которое включает в себя компиляцию с использованием gcc, убедитесь, что у вас есть обновленные инструменты командной строки из XCode - да, я знаю, это ужасно, когда приходится скрывать общесистемный инструмент в настройках приложения.
brew doctor
и устраните все другие препятствияbrew upgrade
для обновления всех пакетов одновременно