aggiornato git locale su Lion, e adesso?


2

Ho riformattato la mia macchina con Lion che aveva questa versione predefinita di git:

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

Ho deciso di aggiornare Git così ho fatto:

$ 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

Sfortunatamente, git non è stato aggiornato:

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

Sono nuovo su Terminal / Command line e su tutto ciò che riguarda Unix, quindi non sono sicuro di quale sarà la mia prossima mossa. Immagino che "Caveats" mi sta dicendo che dovrei fare qualcosa perché questo git aggiornato non è dove git predefinito è. Quindi, devo aggiungere questi percorsi al mio PERCORSO? In tal caso, come posso fare? In caso contrario, cosa devo fare ora?

Grazie

Risposte:


5

È corretto. /usr/local/bino equivalente deve essere aggiunto al tuo PATH, perché è lì che brewinstalla il software. Inoltre, dovrà essere in anticipo rispetto alla directory in cui si trova Git di default.

Prima di effettuare una mossa per correggere il PERCORSO, procedere nel Terminale:

which git

e vedere in quale directory si trova attualmente Git. Questa è la directory che devi battere. Digita anche questo:

echo $SHELL

Spero che tu veda '/ bin / bash', dato che è quello che suppongo tu stia usando. In caso contrario, faccelo sapere.

La cosa più semplice da provare è semplicemente mettere /usr/local/binin primo piano il PERCORSO. Questo è tradizionalmente fatto in un file di configurazione per la shell che viene eseguita quando si avvia un Terminale. Per la shell bash, è ~/.bash_profile(dov'è ~il soprannome per la tua directory home). Vai avanti e crea un file di testo lì se non lo hai già, e aggiungi questa riga:

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

(Nota: utilizzare qui un editor di testo corretto, come TextWrangler o Xcode o l'editor del programmatore preferito, anziché TextEdit a cui piace salvare i file RTF.)

':' Separa le directory nella variabile PATH e si $PATHespande alla definizione corrente (pre-assegnazione) di questa variabile di ambiente. In breve, questo comando antepone /usr/local/binal PERCORSO, quindi esporta il PERCORSO aggiornato nel proprio ambiente, in modo che altri programmi eseguiti dalla shell possano vedere e utilizzare il PERCORSO aggiornato. (Nota: va bene anche /usr/local/bindopo il PERCORSO. Puoi rimuovere la seconda copia e impostare il PERCORSO sul valore completamente documentato, se decidi di voler tenere il /usr/local/binpasso.)

Salvare quel file, uscire da Terminal e riavviarlo. Crea una nuova finestra Terminale e digita:

echo $PATH

Ora dovresti vedere /usr/local/binsul davanti. Esegui git --versione assicurati di vedere la versione che ti aspetti.

Fatto ciò, cosa potrebbe andare storto? Bene, in alcuni casi potresti aver installato qualcosa /usr/local/binche non è così stabile come le tue applicazioni di sistema standard, e quindi potresti non voler che tutto in quella directory abbia la precedenza sul PATH standard. Se questo accade a te, una soluzione comune è quella di creare una nuova directory che abbia solo riferimenti ai programmi specifici che vuoi trovare prima dei programmi standard di sistema nella ricerca:

  1. creare una nuova directory, ad es ~/bin
  2. metti questa directory nella parte anteriore di PATH invece di /usr/local/bin
  3. nel Terminale, eseguire ln -s /usr/local/bin/git ~/bin/gitper creare un collegamento simbolico chiamato gitnella nuova directory, che punta a gitquello brewinstallato. (I collegamenti simbolici sono simili alle "scorciatoie" nel mondo di Windows, se hai familiarità con quelli.)
  4. chiudere e riavviare Terminale e verificare che durante l'esecuzione sia selezionato il programma corretto desiderato git.

Dovrei anche notare che esiste un modo più avanzato e specifico per Mac per impostare PATH. Implica la creazione / modifica della environment.plistconfigurazione. Per fare questo, prima di tutto scopri il percorso completo (cioè che non coinvolge le definizioni precedenti di $PATH) di cui hai bisogno:

echo $PATH

Successivamente, esegui questo:

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

dove ...viene sostituito con qualsiasi percorso si desideri essere predefinito a livello di sistema. Metti la tua directory in primo piano ( /usr/local/bino qualsiasi altra cosa), non dimenticare ':' e copia / incolla il valore echo'd di PATH alla fine. Quindi, per assicurarti che la tua configurazione Mac e la configurazione della shell siano sulla stessa pagina, vai a ~ / .bash_profile e dove hai avuto la export PATHlinea in precedenza , fai invece:

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

Ecco come ho impostato PATH sul mio Mac.

Perché attraversare tutti questi problemi? Perché, a differenza del PERCORSO definito in ~/.bash_profile, questo valore predefinito può essere visto dalle applicazioni GUI che vengono avviate dal Finder o Spotlight. Tuttavia, per le operazioni Git eseguirai dalla riga di comando, non ne avrai bisogno. Inoltre, a molte applicazioni della GUI che utilizzano Git può essere assegnato il percorso assoluto ( /usr/local/bin/git) al programma Git, qualora fosse necessario eseguirlo. Quindi potresti essere in grado di scappare senza dover saltare attraverso questi due cerchi extra. Ma ora conosci il trucco, nel caso in cui diventasse necessario in seguito.

Happy Git hacking!


Tutto vero, ma se l'OP ha un'installazione funzionante di Homebrew, /usr/local/bindovrebbe già essere sul loro cammino.
slhck,

Sì, ma nel mio PERCORSO predefinito è quasi alla fine. Se c'è un Git /usr/bin, vincerà.
Owen S.

Domanda correlata - Ho eseguito l'aggiornamento a Lion dopo aver installato Homebrew / Git in precedenza su Snow Leopard. Cercando di mantenerlo conciso, ho bisogno di annusare tutto e ricominciare. Se elimino /usr/bin/.git/Perdo le chiavi RSA / le impostazioni di configurazione personale di Git?
Brian,

Le chiavi sono generalmente tenute dentro ~/.ssh. La tua configurazione Git globale è di solito in ~/.gitconfig. Non ne ho mai sentito parlare /usr/bin/.git, e /usr/binnon è dove ho capito le cose installate da Homebrew, quindi non sono sicuro di cosa ci sia. Scusate!
Owen S.

A proposito, la pulizia di Homebrew è coperta qui: superuser.com/questions/203707/…
Owen S.

3

Stavo avendo lo stesso identico problema. Owen ebbe la risposta complessiva più completa.

Detto questo, ho scavato un po 'di più e ho trovato quello che credo sia un modo molto più semplice.

environment.plist costruisce il percorso da cui utilizza /private/etc/paths

Quindi, nel terminale basta digitare sudo nano /private/etc/pathse inserire la password di root.

Una volta che sei a Nano, probabilmente vedrai /usr/binprima e per /usr/local/binultima. (Nota: tutto deve essere su una riga separata!) Tutto quello che ho fatto è stato digitare /usr/local/binprima e poi rimuoverlo dall'ultima riga.

Esci dal terminale, quindi esci e accedi nuovamente.

Torna nel terminale e digita git --versione dovresti essere d'oro.


la risposta accettata non ha funzionato per me, tuttavia ha funzionato.
dangerousdave,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.