Napotykam naprawdę dziwny problem, gdy próbuję użyć najnowszej wersji git, którą właśnie zainstalowałem przez homebrew. which git
wskazuje mi instalację homebrew, ale wywołanie git
zwraca 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 .bashrc
naprawione. Nadal which
jestem ciekawy, dlaczego zwróciłby mi poprawny plik wykonywalny, ale nie zostałby wywołany, jeśli ktoś mógłby to wyjaśnić.
$PATH
.Odpowiedzi:
Powłoki utrzymują pamięć podręczną ścieżek, w których znaleziono pliki wykonywalne w
$PATH
zmiennej. Więc/usr/bin/git
raczej buforowane niż/usr/local/bin/git
, bo to drugie nie istniało, kiedy twoja powłoka się uruchomiła. Uruchomieniehash -r
w Bash z bieżącego terminala wyczyści pamięć podręczną, wtedy pierwszą instancją, którą można znaleźć,$PATH
powinna być ta, która się wykonuje.źródło
hash -r
pracował dla mnieMam dokładnie ten sam problem. Oto moje rozwiązanie.
Po zakończeniu pracy nie będzie można zobaczyć żadnych zmian podczas uruchamiania
git --version
. Po prostu wyloguj się i zaloguj ponownie, uruchomgit --version
ponownie.źródło
source ~/.bash_profile
.Mam ten sam problem. Po prostu ponownie uruchomiłem terminal.
źródło
Mój problem polegał na tym, że zainstalowałem aplikację Mac GitHub.
/usr/local/bin/git
wskazywał na wersję git aplikacji, a nie na wersję Homebrew. Odinstalowanie aplikacji GitHub rozwiązało problem.źródło
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 homebrewbrew install git
aby pobrać i zainstalować najnowszą wersję gitbieganie
brew doctor
da ci znaćwykonanie
brew link git
spowoduje błędubrew link --overwrite git
aby zastąpić dowiązanie symboliczne i wskazać zainstalowany napar git.źródło
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.
źródło
git/bin
. Czy masz na myślibin/git
? Nie trzeba też dodawać tego do swoich ścieżek -/usr/local/bin
już tam jest.