L'installation Homebrew de git n'aura pas la priorité sur la version du système (dans / usr / bin /)

10

OS X (ou Xcode) est livré avec git 1.7.quelque chose, mais après brew install git(1.8.0), which gitcontinue de renvoyer l'ancien /usr/bin/git.

Voici ce que j'obtiens quand je fais écho à $ PATH en ce moment:

/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin

Les trucs Homebrew ne devraient-ils pas avoir la priorité?

De plus, je n'ai aucune idée d'où cela usr/local/git/binvient à la fin.

o_o_o--
la source
Avez-vous vérifié que git est bien dans / usr / local / bin?
Joe Bane
oui. ls /usr/local/binmontre gitest là. Brew confirme également qu'il est installé. J'ai même exécuté le programme de désinstallation de git (à la fois en brew uninstallutilisant et en utilisant celui fourni avec le téléchargement officiel de git) et refait brew install git. Je continue which git = = /usr/bin/git".
o_o_o--
2
Courez which -a gitpour voir s'il le trouve.
Joe Bane

Réponses:

7

Je l'ai. La réponse est dans votre question; brew installe git dans /usr/local/git/bin(pas /usr/local/bin) mais puisque c'est après /usr/binsur votre chemin, vous obtenez celui-là en premier. Mon commentaire pour which -a gitaurait dû vous orienter dans cette direction.

Joe Bane
la source
1
Courez ls -l /usr/local/bin/gitaussi. Je parie que c'est un lien symbolique vers /usr/bin/git.
Joe Bane
Oh, et /usr/local/git/binsemble être là où l'installateur officiel le met aussi.
Joe Bane
Vous devriez regarder /etc/pathset /etc/paths.daussi bien.
Joe Bane
1
voici une tournure intéressante des événements: les which -a gitretours /usr/local/bin/git; /usr/bin/git; /usr/local/bin/git. J'ai donc renommé l'ancien git usr/bin/git_oldet l'ai retiré du chemin. Renvoie maintenant la version git --version1.8, prouvant que brew a bien installé git. - Encore une fois, j'ai renommé /usr/bin/gitson nom d'origine ... et tout à coup ça fonctionne correctement! Je ne sais pas pourquoi ni comment, mais renommer /usr/bin/gitet exécuter git semble avoir résolu le problème. Qui sait quelle est la racine du problème. Merci quand même :)
o_o_o--
C'est étrange. Heureux que vous soyez opérationnel maintenant au moins.
Joe Bane
3

J'ai également rencontré ce problème.

Après avoir installé git via homebrew, si vous exécutez, brew doctoril vous avertira que, comme Joe l'a mentionné ci-dessus, le système exécute l'ancien git car son emplacement d'installation vient en premier.

Mais, dans le même avertissement, homebrew donne le code pour le corriger:

$ echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
chorbs
la source
0

Cela fait partie de mes habitudes Unix d'avoir un ~/binrépertoire que je mets au début de mon PATH. Ceci est l'un des premiers bits de mon .bashrc:

case ":$PATH:" in
  *:$HOME/bin:*) ;;     # do nothing if $PATH already contains $HOME/bin
  *) PATH=$HOME/bin:$PATH ;;  # in every other case, add it to the front
esac

Avec cela en place, faire en sorte que seuls les programmes gérés par Homebrew gitaient priorité sur la version du système (au lieu de chaque binaire géré par Homebrew), et uniquement pour vos sessions shell (au lieu de tous les programmes démarrés de n'importe où, y compris les programmes GUI), est aussi simple que de créer un lien symbolique:

ln -s /usr/local/bin/git ~/bin/git
Aristote Pagaltzis
la source