2

Я переформатировал свою машину с Lion, который имел эту версию git по умолчанию:

$ git --version
git version 1.7.7.5 (Apple Git-26)

Я решил обновить Git, поэтому я сделал:

$ brew install git
==> Downloading http://git-core.googlecode.com/files/git-1.7.10.4.tar.gz
######################################################################## 100.0%
==> make prefix=/usr/local/Cellar/git/1.7.10.4 CC=/usr/bin/clang CFLAGS=-Os -w -pipe -    march=native -Qunused-arguments LDFLAGS= install
==> make CC=/usr/bin/clang CFLAGS=-Os -w -pipe -march=native -Qunused-arguments LDFLAGS=
==> make clean 
==> Downloading http://git-core.googlecode.com/files/git-manpages-1.7.10.4.tar.gz
######################################################################## 100.0%
==> Downloading http://git-core.googlecode.com/files/git-htmldocs-1.7.10.4.tar.gz
######################################################################## 100.0%
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

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
==> Summary
/usr/local/Cellar/git/1.7.10.4: 1173 files, 23M, built in 39 seconds

К сожалению, git не был обновлен:

$ git --version
git version 1.7.7.5 (Apple Git-26)

Я новичок в терминале / командной строке и во всех вещах Unix, поэтому я не уверен в том, каким будет мой следующий шаг. Я предполагаю, что "Caveats" говорит мне, что я должен что-то сделать, потому что этот обновленный git не там, где находится git по умолчанию. Итак, мне нужно добавить эти пути к моей PATH? Если да, то как мне это сделать? Если нет, что мне теперь делать?

Спасибо

2 ответа2

5

Правильно. /usr/local/bin или эквивалентный ему необходимо добавить в PATH , потому что именно там brew устанавливает программное обеспечение. Кроме того, он должен быть впереди любого каталога, в котором находится Git по умолчанию. (Примечание: я собираюсь пройти через это медленно, просто чтобы немного погрузить вас в мир Unix.)

Прежде чем сделать шаг, чтобы исправить PATH, сделайте это в Terminal:

which git

и посмотрите, в каком каталоге находится Git. Это каталог, который вы должны побить. Также введите это:

echo $SHELL

Надеюсь, вы увидите «/bin/bash», так как это то, что я собираюсь предположить, что вы используете. Если нет, дайте нам знать.

Самое простое, что можно попробовать - просто поместить /usr/local/bin в начало PATH. Это традиционно делается в конфигурационном файле для вашей оболочки, который запускается при запуске терминала. Для оболочки bash это ~/.bash_profile (где ~ - псевдоним вашего домашнего каталога). Создайте там текстовый файл, если у вас его еще нет, и добавьте следующую строку:

export PATH=/usr/local/bin:$PATH

(Примечание: используйте здесь обычный текстовый редактор, такой как TextWrangler или Xcode или редактор вашего любимого программиста, вместо TextEdit, который любит сохранять файлы RTF.)

':' Разделяет каталоги в переменной PATH, а $PATH расширяется до текущего (до назначения) определения этой переменной среды. В итоге эта команда добавляет /usr/local/bin к вашей переменной PATH, а затем экспортирует обновленную переменную PATH в вашу среду, чтобы другие программы, запущенные из оболочки, могли видеть и использовать обновленную переменную PATH. (Примечание: все в порядке, если /usr/local/bin появится позже в PATH. Вы можете удалить вторую копию и установить для PATH полностью измененное значение, если вы решите сохранить /usr/local/bin заранее.)

Сохраните этот файл, выйдите из терминала и перезапустите его. Создайте новое окно терминала и введите:

echo $PATH

Теперь вы должны увидеть /usr/local/bin на передней панели. Запустите git --version и убедитесь, что вы видите версию, которую ожидаете.

Сделав это, что может пойти не так? Ну, в некоторых случаях вы, возможно, установили что-то в /usr/local/bin которое не так стабильно, как ваши стандартные системные приложения, и поэтому вы не хотите, чтобы все в этом каталоге имело приоритет над стандартным PATH. Если это произойдет с вами, обычное решение - создать новый каталог, в котором есть только ссылки на конкретные программы, которые вы хотите найти перед стандартными системными программами в поиске:

  1. создать новый каталог, например ~/bin
  2. поместите этот каталог перед PATH вместо /usr/local/bin
  3. в Терминале запустите ln -s /usr/local/bin/git ~/bin/git чтобы создать символическую ссылку под названием git в новом каталоге, указывающую на git который установлен brew . (Символические ссылки сродни "ярлыкам" в мире Windows, если вы знакомы с ними.)
  4. Выйдите и перезапустите Терминал, и убедитесь, что при запуске git выбирается нужная программа .

Следует также отметить, что существует более продвинутый, специфичный для Mac способ настройки PATH. Это включает создание / изменение вашей конфигурации environment.plist . Чтобы сделать это, сначала определите полный путь (т.е. не включая предыдущие определения $PATH), который вам нужен:

echo $PATH

После этого запустите это:

defaults write ~/.MacOSX/environment PATH ...

где ... заменяется на любой путь, который вы хотите использовать по умолчанию для всей системы. Поместите ваш каталог в начало (/usr/local/bin или что-то еще), не забывайте ':' и скопируйте / вставьте значение PATH echo'd в конце. Затем, чтобы убедиться, что ваша конфигурация Mac и ваша конфигурация оболочки находятся на одной странице, перейдите в ~ / .bash_profile, и там, где у вас ранее была строка export PATH , сделайте это вместо:

export PATH=`defaults read ~/.MacOSX/environment.plist PATH`

Вот как я настроил PATH на своем Mac.

Зачем переживать все эти неприятности? Потому что, в отличие от PATH, определенного в ~/.bash_profile , это значение по умолчанию можно увидеть в приложениях с графическим интерфейсом, которые запускаются Finder или Spotlight. Однако для операций Git вы будете запускаться из командной строки, вам это не понадобится. Кроме того, многим приложениям с графическим интерфейсом, использующим Git, также может быть предоставлен абсолютный путь (/usr/local/bin/git) к программе Git, если они должны ее запустить. Таким образом, вы могли бы уйти без необходимости прыгать через эти дополнительные пару обручей. Но теперь вы знаете хитрость, на случай, если это станет необходимым позже.

Счастливого взлома Git!

3

У меня была точно такая же проблема. У Оуэна был самый полный общий ответ.

Это сказало, что я сделал больше копания и нашел, что я полагаю, что намного более легкий путь

environment.plist строит используемый им путь из /private/etc/paths

Итак, в терминале просто введите sudo nano /private/etc/paths и введите свой пароль root.

Как только вы окажетесь в nano, вы, вероятно, увидите сначала /usr/bin , а затем /usr/local/bin . (Примечание: все должно быть на отдельной строке!) Все, что я сделал, сначала набрал /usr/local/bin а затем удалил его из последней строки.

Выйдите из терминала, затем выйдите из системы и войдите снова.

Вернитесь в терминал и введите git --version и вы должны быть золотыми.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .