Jak korzystać z zainstalowanego programu Homebrew na komputerze Mac?

115

Zainstalowałem najnowszą wersję git (1.8.3) przy użyciu homebrew, ale kiedy piszę

git --version

w moim terminalu wyświetla:

git version 1.7.10.2 (Apple Git-33)

Co powinienem zrobić, aby zamienić starą wersję git na nową?

Levani
źródło
2
Masz kilka dobrych odpowiedzi - więc chciałem skomentować to pytanie. Szukasz wyraźnych instrukcji instalacji gita ze źródła z homebrew lub klienta GUI, czy po prostu potwierdzenia, że ​​OS X łączy kilka wersji git z podstawowym systemem operacyjnym? opensource.apple.com/source/Git (FWIW - Najnowszy git, jaki widziałem do tej pory w pakiecie Apple to 1.7.12.4, który pochodzi z Git-37)
bmike

Odpowiedzi:

105

Dziękuję wszystkim za pomocne odpowiedzi. W moim przypadku dodanie

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

w ~/.bash_profilenastępnie

source ~/.bash_profile

rozwiązałem problem dla mojego użytkownika.

Levani
źródło
17
Jeśli chcesz zmiany uporczywe całej użytkowników, można przenieść /usr/local/binwyżej /usr/binw /etc/paths.
kevin,
3
Jest to rozwiązanie zaproponowane przez sam Homebrew podczas uruchamiania w brew doctorcelu zdiagnozowania problemu
VoxPelli
1
odpowiedź ta powinna zostać zaktualizowana o proponowane przez KevinT rozwiązanie definiowania /etc/paths. Zdefiniowanie tylko „eksportu” może nie wystarczyć, jeśli /usr/binma „pierwszeństwo” przed /usr/local/bin(z naparu) ...
emgsilva
8
Pamiętaj, aby ponownie uruchomić terminal! Nie przyszło mi do głowy, dopóki nie zobaczyłem komentarza Juana Diego Gonzalesa poniżej
Souleiman
2
@Souleiman: Ponowne uruchomienie nie jest konieczne. source ~/.bash_profileprzeczytam to ponownie. Ponowne uruchomienie jest prawdopodobnie szybsze / łatwiejsze. :)
43

Ok, jestem gotów poważnie potraktować SCM.

$ git --version
git version 1.9.5 (Apple Git-50.3)

Nie, nie tego chciałem. Mam <3 homebrew, więc:

$ brew install git

Wszystko gotowe?

$ git --version
git version 1.9.5 (Apple Git-50.3)

Doh! (zadrapania głowy)

$ which git
/usr/bin/git

Ach, git Apple'a znajduje się w / usr / bin, więc przewyższa homebrew. Co robić?

(A) Zmień nazwę pliku binarnego Apple

(B) Niech jeden zarządzany przez homebrew ma pierwszeństwo:

[edytuj eksport ŚCIEŻKI np. w ~ / .zshrc (oh-my-zsh + iTerm2 FTW! / tangent)]

[konkretnie: move / usr / local / bin / git: before / usr / bin:]

... i / lub (np. aby szerzej pozwolić systemowi homebrew na atut instaluje system, i że pierwszeństwo ma zastosowanie do wszystkich powłok i użytkowników) również edytować plik / etc / paths, [przenoszenie / usr / local / bin powyżej / usr / bin ]

Ale zakładając najprostsze / najmniej inwazyjne podejście:

$ sudo mv /usr/bin/git /usr/bin/git-apple

Zadziałało?

$ which git
/usr/local/bin/git

Jak dotąd tak dobrze, teraz chwila prawdy:

$ git --version
git version 2.2.1

w00t! :) Czas iść przeczytać http://git-scm.com ! :)

co tydzień
źródło
PS Odnośnie komentarzy na temat ryzyka związanego z edycją / usr / bin: IMHO to NBD. (Choć podoba mi się globalny koczownik. Zrobić „sudo ln -s / usr / local / bin / git / usr / bin / git” ... co gwarantuje, że każde wywołanie „/ usr / bin / git” będzie wyraźnie twój zarządzany napar. Ale moim zdaniem, instalacja git oznacza, że ​​przejmujesz własność git na swój system. Martwisz się o nieznane procesy korzystające ze starszej, alternatywnej wersji git, może być źle umieszczony. Zalecam aktualizowanie w / wersje git (dla bezpieczeństwa, nie tylko funkcji) i samodzielne zarządzanie. Homebrew ułatwia to. /$0.02
tydzień
Nie działało to dla mnie, aby je cofnąć, po prostu zrób: sudo mv / usr / bin / git-apple / usr / bin / git. Komentarz Juana Diego Gonzalesa zadziałał. (w zasadzie postępuj zgodnie z przyjętą odpowiedzią, a następnie uruchom ponownie terminal).
Souleiman
Nawet which gitwskazanie na /usr/local/bin/gitto nie działało dla mnie. Aby rozwiązać ten problem, musiałem odinstalować aplikację GitHub na komputery Mac.
Ben
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
Vladislav Rastrusny
Obecnie wydaje się, że homebrew stawia się na „froncie” ŚCIEŻKI, więc mam nadzieję, że nie jest już potrzebny :)
rogerdpack
32

Status 2019

Wszystkie sztuczki wymienione tutaj w kilku odpowiedziach nie są już konieczne w systemie macOS Sierra & Mojave z najnowszą wersją Homebrew. Zapomnij export PATH="..."i modyfikuj ~/.bash_profile.

Po prostu to robisz

brew install git

i gotowe.

Aby potwierdzić, otwórz nowe (!) Okno terminala i wpisz

git --version
Jpsy
źródło
16
Myślę, że to prawda, ale musisz otworzyć nowy terminal, inaczej zmiana nie zostanie odebrana
robjwilkins,
To niestety nie działa dla mnie.
rsp1984,
2
To działało dla mnie w Mojave. I nie trzeba otwierać nowy terminal.
Craig Otis
2
brew link --overwrite gitpracował dla mnie
wickdninja
9

Po zainstalowaniu najnowszego gita przez brew ( brew install git), uruchom ten jednowierszowy (jak sugeruje brew doctor), jeśli jeszcze go nie ma:

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

Następnie zamknij Terminal i otwórz go ponownie (ponownie uruchom sesję bash). Musisz to zrobić, nawet jeśli ŚCIEŻKA jest już poprawna, ponieważ ZSH i Bash buforują zawartość ŚCIEŻKI (zobacz dokumentację wbudowanego polecenia hash).

To powinno naprawić wszystko naprawdę szybko.

Juan Diego Gonzales
źródło
1
Czym różni się to od przyjętej odpowiedzi?
user151019,
6
W moim przypadku nie wiedziałem, że muszę ponownie uruchomić Terminal, więc ta część może pomóc niektórym ludziom. Jest szybszy niż przyjęty ze względu na jedną wkładkę. Jeśli jest to konkurs, myślę, że moja odpowiedź jest niewłaściwa. W przeciwnym razie myślę, że się przyczynia. (Powiedz mi, jeśli chcesz, abym dokonał edycji zamiast tego).
Juan Diego Gonzales
Robisz ten jeden liner podczas instalacji Homebrew
user151019
7
Uznałem tę odpowiedź za pomocną. Ponowne uruchomienie terminala jest nieoczywistym problemem dla wielu osób niezaznajomionych z działaniem .bash_profile i delikatnym przypomnieniem dla reszty z nas.
Magne
@JuanDiegoGonzales Doskonała obserwacja! Zastanawiałem się nad tym samym po zainstalowaniu gita i nie wiedziałem dlaczego. Po wskazówkach dotyczących pamięci podręcznej przeprowadziłem nieco więcej badań: unix.stackexchange.com/q/5609/52921
kstratis
4

Kiedy piszesz

git --version

w Terminal.app lub konsoli komentarz do innego pytania wskazywał, że zwracana wersja to git w / usr / bin / git

Jeśli zainstalowałeś Xcode 4.5 (i nowsze) i wpisz

xcrun git --version

w Terminal.app lub konsoli zwracana wersja to git w pakiecie aplikacji Xcode.

Jeśli używasz Homebrew do instalacji i aktualizacji git, najprostszym rozwiązaniem jest

  1. upewnij się, że masz uprawnienia administratora, ponieważ zostaniesz poproszony o hasło administratora
  2. zmień nazwę oryginalnej lokalizacji, zmieniając jej nazwę za pomocą mv. Na przykład

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

  3. utwórz miękkie łącze za pomocą 'ln -s' do pliku binarnego git zainstalowanego z Homebrew.

Zauważ, że MattDMo ma lepsze rozwiązanie w komentarzach.

Globalny koczownik
źródło
Czy to jest w 100% bezpieczne? Czy to zepsuje coś związanego z Mac?
Levani
Jeśli wykonasz opisane kroki, rozwiązanie nie zepsuje niczego wstępnie zainstalowanego, ponieważ pliki wykonywalne git nie są usuwane. To dlatego w punkcie 2 powinien zmienić nazwę oryginalnego / usr / bin / git na przykład jako /usr/bin/git.BACKUP
Globalny nomad
10
Nie rób tego - naprawdę nie powinieneś się bawić /usr/bin, ponieważ możliwe jest, że inne programy, o których nawet nie wiesz, zależą od kaprysów związanych z określoną wersją. Najłatwiejszym rozwiązaniem, bez przenoszenia niczego, jest dodanie /usr/local/bindo $PATHzmiennej środowiskowej przed /usr/bin- IIRC, homebrew instaluje się/usr/local/bin
MattDMo
Dzięki @MattDMo, to wydaje się być najlepszym podejściem w tym przypadku.
Levani
2

Próbowałem tego i to działa dla mnie.

brew link --overwrite git
Song WANG
źródło
Pracował dla mnie na Mojave (10.14.4)
z pieprzem
1

Musisz zmienić nazwę oryginalnego git przez apple /usr/bin/na np. Git-org, ponieważ /usr/binzwykle znajduje się on /usr/local/binw katalogu ścieżki, w którym znajduje się napar.

Więc:

cd /usr/bin
sudo mv git git-org

i nie zapomnij połączyć dupka

brew link git

Zakłada się, że /usr/local/binjest to $PATHzmienna środowiskowa. Jeśli nadal masz problem, spróbuj uruchomić

brew doctor 

i napraw wymienione tam problemy.

Pfitz
źródło
3
Don; t zmieniaj nazwy lub zmieniaj rzeczy w / usr / bin, ponieważ może to złamać Apple thigs i zostaną one zmienione podczas aktualizacji systemu lub XCode. użyj ścieżki, do której jest przeznaczony,
user151019
@ Zaznacz, że masz rację. Ale nie sądzę, abyś miał kłopoty, jeśli zmienisz tylko git w / usr / bin. Dla mnie to działa przez kilka miesięcy.
Pfitz
Zgodziłbym się, że normalna zmiana rzeczy w / usr / bin to złe wieści, ale nie mogę sobie przypomnieć, że OS X faktycznie używa git, więc szkoda może być niewielka i dotyczy tylko „czystego” systemu, który pasuje do rachunków. Szkodą byłaby aktualizacja OS X, która mogłaby zastąpić nowego gita starszą wersją, stąd normalną praktyką jest lokalizowanie nowego pliku binarnego poza lokalizacją ścieżki systemowej.
bmike
3
Myślę, że znacznie łatwiej byłoby dodać /usr/local/bin(katalog instalacyjny homebrew, IIRC) do $PATHprzodu, /usr/binzamiast
marudzić
1

Zainstaluj git with brew, uruchom to.

brew link --force git

Zamknij i ponownie otwórz terminal, aby uruchomić which git.

Jan
źródło
1
Jak to zmienia domyślną ścieżkę?
user151019
Pomogło mi to zastąpić git xcode.
surjikal
brew link --overwrite git
Wystąpił
0

Jeśli instalujesz git bezpośrednio z git-scm.com i chciałbyś użyć najnowszego pobranego gita zamiast starej (starej) wersji git firmy Apple.

  1. Zainstaluj git z git-scm.com
  2. Najprawdopodobniej zostanie zainstalowany nowy git /usr/local/bin/git
  3. Spróbuj git --version, jeśli zwróci starą wersję git firmy Apple, przejdź dalej
  4. cd ~ (zmień katalog na katalog domowy)
  5. rodzaj vi .bashrc
  6. Użyj i(aby wstawić tekst w edytorze vi)
  7. Jeśli znajdziesz linię z export PATH......., naciśnij enter na górze eksportu i wpisz następujące polecenie: export PATH=/usr/local/:$PATH(Zachowaj szczególną ostrożność przy PATHzmiennej, nie popsuj jej, bo spowoduje to problemy dla twojego systemu operacyjnego) (mam nadzieję, że powinien być zainstalowany nowy git /usr/local/git)
  8. Naciśnij klawisz esc
  9. Enter :wq(aby zapisać .bashrcplik)
  10. Wyjdź z terminala i uruchom nowy terminal
  11. Teraz spróbuj git --version(powinieneś zobaczyć nową wersję)
dataramr
źródło
-1

To zależy od tego, skąd pochodzi twój dupek. Xcode oferuje na przykład wersję, która może być z góry na twojej ścieżce.

Może pisanie

which git

pokaże, gdzie jest stary.

Nicholaz
źródło
jest w /usr/bin/git...
Levani
2
To wygląda jak dwie instalacje. Myślę, że normalna (dostępna do pobrania) wersja git idzie do / usr / local / git / ... To jest kwestia dodania tego do ścieżki lub usunięcia drugiego (lub obu)
Nicholaz
-2

Aby zaktualizować cokolwiek za pomocą Homebrew na OSX, co wymaga kompilacji za pomocą gcc, upewnij się, że masz zaktualizowane Narzędzia wiersza poleceń od Xcode - tak, wiem, to jest trudne do ukrycia narzędzia systemowego w preferencjach aplikacji.

Kroki

  1. Przejdź do Xcode.app -> Preferencje -> Pobieranie
  2. Zaktualizuj (lub zainstaluj) narzędzia wiersza polecenia
  3. Uruchom brew doctori napraw wszystkie inne przeszkody
  4. Uruchom, brew upgradeaby zaktualizować wszystkie pakiety naraz
iGbanam
źródło