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

116

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

git --version

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

git version 1.7.10.2 (Apple Git-33)

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

Levani
источник
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

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

Levani
источник
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 ! :)

cweekly
источник
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
Jpsy
источник
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, это лучший подход в этом случае.
Левани
2

Я попробовал это, и это работает для меня.

brew link --overwrite git
Песня ВАН
источник
Работал для меня в Мохаве (10.14.4)
засыпали
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 

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

Pfitz
источник
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(вы должны увидеть новую версию)
dataramr
источник
-1

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

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

which git

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

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

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

меры

  1. Зайдите в Xcode.app -> Настройки -> Загрузки
  2. Обновление (или установка) инструментов командной строки
  3. Запустите brew doctorи устраните все другие препятствия
  4. Запустите brew upgradeдля обновления всех пакетов одновременно
iGbanam
источник