Nie można użyć zainstalowanego programu homebrew

16

Napotykam naprawdę dziwny problem, gdy próbuję użyć najnowszej wersji git, którą właśnie zainstalowałem przez homebrew. which gitwskazuje mi instalację homebrew, ale wywołanie gitzwraca oryginalną wersję zainstalowaną z OS X.

Najpierw sprawdziłem, aby zobaczyć oryginalną wersję, w której byłem.

[user@home ~]$ git --version
git version 1.8.5.2 (Apple Git-48)

Potem poszedłem do homebrew, aby zainstalować najnowszą wersję.

[user@home ~]$ brew install git
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/git-2.0.0.mavericks.bottle.2.tar.gz
######################################################################## 100.0%
==> Pouring git-2.0.0.mavericks.bottle.2.tar.gz
==> Caveats
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

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completion has been installed to:
  /usr/local/share/zsh/site-functions
==> Summary
🍺  /usr/local/Cellar/git/2.0.0: 1324 files, 31M

Wygląda na to, że zadziałało! Sprawdź, czy wskazuje prawidłowy git

[user@home ~]$ which git
/usr/local/bin/git

Powinno być dobrze, prawda? Nie tak szybko

[user@home ~]$ git --version
git version 1.8.5.2 (Apple Git-48)

To jest dziwne. Czy naprawdę wskazuję na właściwego dupka?

[user@home ~]$ ls -l /usr/local/bin/git
lrwxr-xr-x  1 user  group  27 Jul  3 15:54 /usr/local/bin/git -> ../Cellar/git/2.0.0/bin/git

Pewnie tak to wygląda. Działa, gdy nazywam to ręcznie

[user@home ~]$ /usr/local/Cellar/git/2.0.0/bin/git --version
git version 2.0.0

Ale nie tak git

[user@home ~]$ which git
/usr/local/bin/git
[user@home ~]$ git --version
git version 1.8.5.2 (Apple Git-48)

Wszelkie pomysły na to, co może być tego przyczyną?

EDYCJA: Rozwiązane. source .bashrcnaprawione. Nadal whichjestem ciekawy, dlaczego zwróciłby mi poprawny plik wykonywalny, ale nie zostałby wywołany, jeśli ktoś mógłby to wyjaśnić.

Matt Stone
źródło
Nie jestem pewien, na czym dokładnie polega problem, ale wygląda na to, że warto przyjrzeć się bieżącej wartości $PATH.
Zev Eisenberg
3
jeśli chcesz zobaczyć wszystkie zainstalowane wersje gita, użyj -> który -a git - (który to git, po prostu zwraca ci ścieżkę pierwszego znalezionego w zmiennej PATH), aby zobaczyć, jakie ścieżki masz w PATH -> echo $ PATH
konqui

Odpowiedzi:

25

Powłoki utrzymują pamięć podręczną ścieżek, w których znaleziono pliki wykonywalne w $PATHzmiennej. Więc /usr/bin/gitraczej buforowane niż /usr/local/bin/git, bo to drugie nie istniało, kiedy twoja powłoka się uruchomiła. Uruchomienie hash -rw Bash z bieżącego terminala wyczyści pamięć podręczną, wtedy pierwszą instancją, którą można znaleźć, $PATHpowinna być ta, która się wykonuje.

realgeek
źródło
hash -rpracował dla mnie
metalowy sprzęt stały
5

Mam dokładnie ten sam problem. Oto moje rozwiązanie.

brew uninstall git
# make sure everything is alright, maybe brew will give you some hint
brew doctor
brew update  
brew install git
# magic happen, brew will give you hint /usr/bin occurs before /usr/local/bin
# and recommend you run following command
brew doctor
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile

Po zakończeniu pracy nie będzie można zobaczyć żadnych zmian podczas uruchamiania git --version. Po prostu wyloguj się i zaloguj ponownie, uruchom git --versionponownie.

Kieł
źródło
7
Wystarczy otworzyć nowe okno terminala. Alternatywnie można również zadzwonić source ~/.bash_profile.
Daniel B
Te kroki były dokładnie tym, czego potrzebowałem i pomogły mi ustawić system przy użyciu najnowszej wersji git. Odkryłem również inną kopię gita, którą pobrałem z git-scm.com, więc uruchomiłem skrypt uninstall.sh, aby go usunąć. Wszystko mi teraz dobrze, wielkie dzięki Fangowi i Jensowi!
Michael Sheaver
Dzięki za kroki. Dla mnie automatycznie mogłem użyć git --version bez uruchamiania ostatniego polecenia echo.
Michael Fulton
0

Mam ten sam problem. Po prostu ponownie uruchomiłem terminal.

silnik szeregowy
źródło
-1

Mój problem polegał na tym, że zainstalowałem aplikację Mac GitHub. /usr/local/bin/gitwskazywał na wersję git aplikacji, a nie na wersję Homebrew. Odinstalowanie aplikacji GitHub rozwiązało problem.

Ben
źródło
-1

Korzystając z homebrew do aktualizacji git na twoim komputerze, wykonaj następujące kroki:

brew doctor

Napraw sugerowane problemy

brew update jeśli dostępna jest nowsza wersja homebrew

brew install git aby pobrać i zainstalować najnowszą wersję git

bieganie brew doctorda ci znać

Ostrzeżenie : Odłączyłeś beczki w piwnicy

wykonanie brew link gitspowoduje błędu

Błąd: Nie można dowiązać do bin / git

Obiekt docelowy / usr / local / bin / git już istnieje. Możesz go usunąć:

rm '/ usr / local / bin / git'

brew link --overwrite git aby zastąpić dowiązanie symboliczne i wskazać zainstalowany napar git.

Chekkan
źródło
-1

Otwórz swój terminal. Wpisz to polecenie.

sudo nano /etc/paths

Następnie skopiuj następującą ścieżkę na początku pliku.

/usr/local/git/bin

Naciśnij klawisze Control + X i zapisz.

Czek git --version

Pracuje dla mnie.

Pan Pi
źródło
Nie ma takiego pliku git/bin. Czy masz na myśli bin/git? Nie trzeba też dodawać tego do swoich ścieżek - /usr/local/binjuż tam jest.
slhck