Как обновить Git (фактически удалить Apple git и установить новый через brew)?

Я хочу обновить гит. Я нахожу эту статью:

На одном из первых шагов у меня возникает проблема. Когда я попытался сделать резервную копию установленного в данный момент git, я получил ограничение разрешений. Все в порядке, это должно быть какое-то системное ограничение OSX.

Я проверил PATH и заметил, что это /usr/binпосле /usr/local/bin. Поэтому, если я просто установлю новую версию git через brew, эта версия будет использоваться (поскольку brew устанавливает все в /usr/local/bin. Я сделал это, и результат меня расстроил. Вместо установленного через brew используется старый git. Почему?

Вот некоторые результаты:

svlad at sharikovvlad in ~/sandbox/git-test on master [+]
$ git --version
git version 2.11.0 (Apple Git-81)

svlad at sharikovvlad in ~/sandbox/git-test on master [+]
$ which git
/usr/local/bin/git

svlad at sharikovvlad in ~/sandbox/git-test on master [+]
$ ls -al /usr/local/bin/git | grep git
lrwxr-xr-x  1 svlad  admin  28 Sep  3 18:16 /usr/local/bin/git -> ../Cellar/git/2.14.1/bin/git

svlad at sharikovvlad in ~/sandbox/git-test on master [+]
$ /usr/local/Cellar/git/2.14.1/bin/git --version
git version 2.14.1

svlad at sharikovvlad in ~/sandbox/git-test on master [+]
$ echo $PATH
/Users/svlad/bin:/usr/local/opt/gnupg@1.4/libexec/gpgbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Frameworks/Mono.framework/Versions/Current/Commands
$

Итак, почему Apple git использует? /usr/local/binнаходится первым в пути, поэтому необходимо использовать символическую ссылку из этой папки? Так почему я получаю старую версию?

Кроме того, есть мысли, как удалить Apple git?

«На одном из первых шагов у меня возникла проблема. Когда я попытался сделать резервную копию установленного в данный момент git, я получил ограничение разрешений. Все в порядке, это должно быть какое-то системное ограничение OSX». Да, это называется «Защита целостности системы» и не позволяет вам изменять определенные системные файлы, в том числе что-либо в /usr/bin. Вы можете просто отключить SIP и удалить или заменить /usr/bin/git — хотя это действительно не очень хорошее решение.
Вы пробовали новый терминал или перезагружались после установки доморощенного git?
@Wowfunhappy Привет! Благодарю за ваш ответ! Да, это не очень хорошее решение.
@Mark Да, я много раз перезапускал Mac после установки доморощенного.
Собственно почему не могу удалить вопрос не в этом. Главный вопрос: почему ОС выбирает git /usr/binвместо /usr/local/bin? localкаталог находится слева, и, как я знаю, macos пытаются найти команду в каждом каталоге в PATH, и она идет слева направо. Поэтому git in /usr/local/binдолжен быть решен в первую очередь. /usr/binПочему тогда используется git from ?
Что дает /usr/local/bin/git —version и зачем вы передаете ls через grep?

Ответы (1)

Вы можете попробовать удалить только инструменты CLI, которые поставляются с Apple git, и это может решить вашу проблему.

Удаление инструментов командной строки

если это не помогло, это означает, что инструменты CLI были загружены отдельно от Xcode, и вы можете попробовать это, чтобы удалить его:

sudo rm -rf /Library/Developer/CommandLineTools

Как только это исчезнет, ​​вы просто убедитесь, что оно было удалено, а затем переустановите его с помощью Homebrew. Надеюсь, это может помочь.

На самом деле, я не думаю, что это хорошая идея, чтобы удалить что-то установленное из коробки. Главный вопрос в том, почему usr/binиспользуется git from, а не from /usr/local/bin: apple.stackexchange.com/questions/297286/…