Як використовувати встановлений Homebrew git на Mac?


115

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

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

Відповіді:


105

Дякую всім за корисні відповіді. У моєму випадку додаю

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(з самогону) ...
emgsilva

8
Не забудьте перезапустити термінал! Мені не
прийшло в голову,

2
@Souleiman: Перезапуск не потрібен. source ~/.bash_profileперечитає це. Перезапуск просто напевно швидше / простіше. :)

43

Гаразд, я готовий серйозно поставитися до 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)

До! (дряпає голову)

$ which git
/usr/bin/git

Ах, Apple, git є в / usr / bin, тож воно козирує домашнє. Що робити?

(A) Просто перейменуйте двійкові Apple

(B) Нехай один, котрий керує домашньою мовою, має перевагу:

[редагувати експорт PATH, наприклад, у ~ / .zshrc (о-мі-zsh + iTerm2 FTW! / tangent)]

[конкретно: move / usr / local / bin / git: before / usr / bin:]

... та / або (наприклад, для більш широкого дозволу встановити систему козирів, які встановлюють козир, і мати пріоритет для всіх оболонок та користувачів) також редагувати / etc / path file, [переміщення / 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 Rel коментує ризики редагування / usr / bin: IMHO це NBD. (Tho мені подобається sugg Global nomad. Робити "sudo ln -s / usr / local / bin / git / usr / bin / git" ... що гарантує, що все, що викликає "/ usr / bin / git", явно отримає ваш пивоварений варіант. Але я вважаю, що встановлення 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
Я думаю, що це правильно, але вам потрібно відкрити новий термінал, або зміна не підібрана
robjwilkins

На жаль, це не працює для мене.
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

Потім знову закрийте Terminal a open (перезапустіть баш-сесію). Це потрібно зробити, навіть якщо ваш PATH вже був правильним, оскільки ZSH та Bash кешують вміст PATH (див. Документацію щодо вбудованої команди hash).

Це повинно виправити речі дуже швидко.


1
Чим це відрізняється від прийнятої відповіді?
користувач151019

6
У моєму випадку я не знав, що мені доведеться перезапустити Terminal, щоб ця частина могла допомогти деяким людям. Швидше прийнятого через одного вкладиша. Якщо це змагання, я вважаю, що моя відповідь неправильна. Інакше я думаю, що це сприяє. (Скажіть, якщо ви хочете, щоб я змінив замість цього).
Хуан Дієго Гонсалес

Ви робите цей один вкладиш, коли встановлюєте 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

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у вашому каталозі шляху, де знаходиться заварний матеріал.

Тому:

cd /usr/bin
sudo mv git git-org

і не забудьте зв’язати заварку git

brew link git

Це передбачає, що /usr/local/binє у вашому $PATHсередовищі змінною. Якщо у вас все ще виникають проблеми, спробуйте запустити

brew doctor 

і виправити згадані там проблеми.


3
Не перейменовуйте та не переробляйте речі в / usr / bin, оскільки це може зламати Apple Thigs, і вони стануть зв'язаними під час оновлення системи чи XCode. використовуйте шлях, для якого він призначений,
user151019

@ Марк у вас є пункт. Але я не вірю, що у вас виникнуть проблеми, якщо ви зміните лише git в / usr / bin. Для мене це працює кілька місяців.
Pfitz

Я погоджуюся, що зазвичай змінити речі в / usr / bin - це погана новина, але я не можу пригадати, щоб OS X фактично використовував git, тому шкода там може бути незначною і стосується лише "чистої" системи, яка відповідає квитанціям. Шкода може бути оновленням для OS X, можливо, замінить новий git старішою версією, отже, звичайна практика пошуку нового бінарного файлу поза місцем системного шляху.
bmike

3
Думаю, було б набагато простіше додати /usr/local/bin(каталог встановлення homebrew, IIRC) $PATHнаперед, /usr/binа не замінюватись перейменовуванням та резервним
копієм

1

Встановіть git з варитися, запустіть це.

brew link --force git

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


1
Як це змінює шлях за замовчуванням?
користувач151019

Це працювало для мене, щоб змінити git xcode.
surjikal

Я отримав помилку під час запуску цього, але 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. Натисніть еск
  9. Введіть :wq(щоб зберегти .bashrcфайл)
  10. Вийдіть з терміналу і запустіть новий термінал
  11. Тепер спробуйте git --version(ви повинні побачити нову версію)

-1

Це залежить від того, звідки походить твоя туга. Xcode приносить версію, наприклад, можливо, це передова на вашому шляху.

Можливо, набравши текст

which git

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


це в /usr/bin/git...
Левані

2
Це схоже на дві установки. Я думаю, що звичайна версія git переходить на / usr / local / git / ... Тоді йдеться про те, щоб додати це до шляху або видалити інше (або те й інше)
Ніколаз

-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.