Как использовать Homebrew установленный Git на Mac?


116

Я установил последнюю версию git (1.8.3), используя homebrew, но когда я набираю

git --version

в моем терминале он печатает:

git version 1.7.10.2 (Apple Git-33)

Что я должен сделать, чтобы заменить старую версию git новой?


2
У вас есть пара хороших ответов - поэтому я хотел прокомментировать вопрос. Вы ищете явные инструкции для установки git из исходных текстов из homebrew или клиента с графическим интерфейсом или просто для подтверждения того, что OS X связывает несколько версий git с базовой ОС? opensource.apple.com/source/Git (FWIW - новейший git, который я видел на сегодняшний день в комплекте с Apple, - 1.7.12.4, пришедший из Git-37)
bmike

Ответы:


106

Спасибо всем за полезные ответы. В моем случае добавление

export PATH="/usr/local/bin:${PATH}"

в ~/.bash_profileсопровождении

source ~/.bash_profile

решил проблему для моего пользователя.


17
Если вы хотите , чтобы изменения упорных между пользователями, вы можете двигаться /usr/local/binвыше /usr/binв /etc/paths.
Кевин

3
Это решение было предложено самим Homebrew при brew doctorдиагностике проблемы
VoxPelli

1
этот ответ должен быть дополнен предложенным KevinT решением определения /etc/paths. Определение только «экспорта» может оказаться недостаточным, если оно /usr/binимеет «приоритет» над /usr/local/bin(от brew) ...
emgsilva

8
Не забудьте перезапустить терминал! Мне не
приходило

2
@ Сулейман: Перезапуск не нужен. source ~/.bash_profileперечитает это. Перезапуск, скорее всего, быстрее / проще. :)

44

Хорошо, я готов серьезно относиться к 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 ! :)


PS Обращайтесь к комментариям о рисках редактирования / usr / bin: ИМХО это NBD. (То есть мне нравится sugg Global nomad. Делать "sudo ln -s / usr / local / bin / git / usr / bin / git" ... который гарантирует, что все, что вызывает "/ usr / bin / git" явно получит ваш brew-управляемый. Но я полагаю, что установка git подразумевает, что вы становитесь владельцем git в своей системе. Беспокойство по поводу неизвестных процессов, использующих более старую альтернативную версию git, может оказаться неуместным. git-версии (для безопасности, а не только для функций) и управления ими самостоятельно. Homebrew делает это легко. /$0.02
cweekly

Это не сработало для меня, чтобы отменить это, просто сделайте: sudo mv / usr / bin / git-apple / usr / bin / git. Комментарий Хуана Диего Гонсалеса сработал. (в основном следуйте принятому ответу, затем перезапустите терминал).
Сулейман

Даже с which gitуказанием на /usr/local/bin/gitэто не сработало для меня. Чтобы решить эту проблему, мне пришлось удалить приложение GitHub Mac.
Бен

2
MacOS 10.12.5:sudo mv /usr/bin/git /usr/bin/git-apple mv: rename /usr/bin/git to /usr/bin/git-apple: Operation not permitted
Владислав Раструсный

В наши дни, кажется, доморощенный ставит себя на «передний
план

32

Статус 2019

Все трюки, упомянутые здесь в нескольких ответах, больше не нужны в macOS Sierra & Mojave с последней версией Homebrew. Забудьте export PATH="..."и модификации ~/.bash_profile.

Вы просто делаете

brew install git

и вы сделали.

Для подтверждения откройте новое (!) Окно терминала и введите

git --version

16
Я думаю, что это правильно, но вам нужно открыть новый терминал, или изменение не было
принято

Это не работает для меня, к сожалению.
rsp1984

2
Это работало для меня на Мохаве. Я же должен открыть новый терминал.
Крейг Отис

2
brew link --overwrite gitработал для меня
wickdninja

9

После того, как вы установили последнюю версию git через brew ( brew install git), запустите эту однострочную версию (как предложено brew doctor), если ее там еще нет:

echo "export PATH=/usr/local/bin:$PATH" >> ~/.bash_profile

Затем выйдите из терминала и снова откройте его (перезапустите сеанс bash). Вы должны сделать это, даже если ваш PATH уже был корректным, поскольку ZSH и Bash кэшируют содержимое PATH (см. Документацию по встроенной команде hash).

Это должно исправить вещи очень быстро.


1
Чем это отличается от принятого ответа?
user151019

6
В моем случае я не знал, что мне нужно было перезапустить Терминал, чтобы эта часть могла помочь некоторым людям. Быстрее, чем принято из-за одного лайнера. Если это соревнование, я думаю, что мой ответ неуместен. В противном случае я думаю, что это способствует. (Скажите, хотите ли вы, чтобы я сделал правку вместо этого).
Хуан Диего Гонсалес

Вы делаете это одним вкладышем при установке Homebrew
user151019

7
Я нашел этот ответ полезным. Перезапуск терминала - неочевидная проблема для многих людей, незнакомых с работой .bash_profile, и мягкое напоминание для всех нас.
Магне

@JuanDiegoGonzales Отличное наблюдение! Мне было интересно то же самое после того, как я установил git и не знал почему. После подсказки о кеше я провел еще несколько исследований: unix.stackexchange.com/q/5609/52921
kstratis

4

Когда вы печатаете

git --version

в Terminal.app или в консоли, ваш комментарий к другому вопросу указал, что версией, которую он возвращает, является git в / usr / bin / git

Если вы установили Xcode 4.5 (и новее), введите

xcrun git --version

в Terminal.app или в консоли его версия - это git в комплекте приложений Xcode.

Если вы используете Homebrew для установки и обновления git, самое простое решение -

  1. убедитесь, что у вас есть права администратора, так как вам будет предложено ввести пароль для администратора
  2. переименуйте исходное местоположение, переименовав его с помощью mv. Например

    sudo mv / usr / bin / git / usr / bin / git-ORIGINAL

  3. создайте программную ссылку, используя 'ln -s', на бинарный файл git, который вы установили с помощью Homebrew.

Обратите внимание, что MattDMo имеет лучшее решение в комментариях.


Это 100% безопасно? Это сломает что-нибудь, связанное с Mac?
Левани

Если вы выполните описанные шаги, решение не нарушит ничего предустановленного, так как эти исполняемые файлы git не удаляются. Вот почему на шаге 2 вы должны переименовать свой оригинальный / usr / bin / git, например, в /usr/bin/git.BACKUP
Global nomad

10
Пожалуйста, не делайте этого - вы действительно не должны возиться с этим /usr/bin, поскольку вполне возможно, что другие программы, о которых вы даже не знаете, зависят от капризов, связанных с конкретной версией. Самое простое решение, не двигая ничего, чтобы добавить /usr/local/binк вашему $PATHпеременному окружению перед тем /usr/bin- IIRC, доморощенный устанавливается на/usr/local/bin
MattDMo

Спасибо @MattDMo, это лучший подход в этом случае.
Левани


1

Вы должны переименовать оригинальный 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 

и исправить проблемы, упомянутые там.


3
Не переименовывайте и не изменяйте вещи в / usr / bin, так как это может сломать ветки Apple, и они будут заблокированы при обновлении системы или XCode. используйте путь, для которого он предназначен,
user151019

@ Отметьте, что у вас есть смысл. Но я не верю, что у вас будут проблемы, если вы измените только git в / usr / bin. Для меня это работает в течение нескольких месяцев.
Пфитц

Я бы согласился с тем, что обычно изменение вещей в / usr / bin - это плохие новости, но я не могу вспомнить, чтобы OS X фактически использовала git, поэтому вред там может быть незначительным и относиться только к «чистой» системе, которая соответствует квитанциям. Вред может состоять в том, что обновление OS X может заменить новый git на более старую версию, поэтому обычная практика заключается в поиске нового двоичного файла вне системного пути.
bmike

3
Я думаю, что было бы намного проще добавить /usr/local/bin(каталог установки homebrew, IIRC) $PATHвперед, /usr/binвместо того, чтобы возиться с переименованием и резервным копированием и т. Д.
MattDMo

1

Установите мерзавца с завариванием, запустите это.

brew link --force git

Закройте и снова откройте терминал для запуска which git.


1
Как это меняет путь по умолчанию?
user151019

Это помогло мне переопределить мерзавец xcode.
Суржикал

Я получил ошибку при запуске этого, но brew link --overwrite gitсработало
wickdninja

0

Если вы устанавливаете git напрямую с git-scm.com и хотите использовать последнюю загруженную версию git вместо яблочной (старой) версии git.

  1. Установите git с git-scm.com
  2. Скорее всего, новый Git будет установлен в /usr/local/bin/git
  3. Попробуйте git --version, если он вернет Apple старую версию git, перейдите ниже
  4. cd ~ (смените каталог на ваш домашний каталог)
  5. тип vi .bashrc
  6. Используйте i(чтобы вставить текст в редактор vi)
  7. Если вы найдете строку с export PATH......., нажмите ввод в верхней части экспорта и введите следующее: export PATH=/usr/local/:$PATH(Будьте предельно осторожны с PATHпеременной, не путайте ее, иначе это вызовет проблемы для вашей ОС) (надеюсь, новый git должен быть установлен в /usr/local/git)
  8. Нажмите Esc
  9. Enter :wq(чтобы сохранить .bashrcфайл)
  10. Выйдите из терминала и запустите новый терминал
  11. Теперь попробуйте git --version(вы должны увидеть новую версию)

-1

Это зависит от того, откуда взялся ваш мерзавец. Например, XCode предлагает версию, которая, возможно, стоит на вашем пути.

Может быть, набрав

which git

покажет, где старый.


это в /usr/bin/git...
Левани

2
Это похоже на две установки. Я думаю, что нормальная (загружаемая) версия git находится в / usr / local / git / ... Тогда возникает вопрос о том, чтобы добавить это к пути или удалить другой (или оба)
Nicholaz

-2

Чтобы обновить что-либо с помощью Homebrew на OSX, которое включает в себя компиляцию с использованием gcc, убедитесь, что у вас есть обновленные инструменты командной строки из XCode - да, я знаю, это ужасно, когда приходится скрывать общесистемный инструмент в настройках приложения.

меры

  1. Зайдите в Xcode.app -> Настройки -> Загрузки
  2. Обновление (или установка) инструментов командной строки
  3. Запустите brew doctorи устраните все другие препятствия
  4. Запустите brew upgradeдля обновления всех пакетов одновременно
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.