La instalación casera de git no tendrá prioridad sobre la versión del sistema (en /usr/bin/)

La instalación casera de git no tendrá prioridad sobre la versión del sistema (en /usr/bin/)

OS X (o Xcode) viene incluido con git 1.7.algo, pero después brew install git(1.8.0), which gitsigue devolviendo el antiguo /usr/bin/git.

Esto es lo que obtengo cuando hago eco de $PATH ahora mismo:

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

¿No deberían tener prioridad las cosas caseras?

Además, no tengo idea de dónde usr/local/git/binviene eso al final.

Respuesta1

Entiendo. La respuesta está en tu pregunta; brew instala git en /usr/local/git/bin(no /usr/local/bin), pero como está después /usr/binen tu camino, lo obtienes primero. Mi comentario which -a gitdebería haberte apuntado en esta dirección.

Respuesta2

También encontré este problema.

Después de instalar git a través de homebrew, si lo ejecuta, brew doctorle advertirá que, como Joe mencionó anteriormente, el sistema está ejecutando el antiguo git porque su ubicación de instalación es lo primero.

Pero, en la misma advertencia, homebrew proporciona el código para solucionarlo:

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

Respuesta3

Ha sido parte de mis hábitos de Unix tener un ~/bindirectorio que coloco al comienzo de mi archivo PATH. Este es uno de los primeros bits de mi .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

Una vez implementado esto, hacer que selectivamente solo la versión administrada por Homebrew gittenga prioridad sobre la versión del sistema (en lugar decadaBinario administrado por Homebrew), y solo para sus sesiones de shell (en lugar detodoprogramas iniciados desde cualquier lugar, incluidos los programas GUI), es tan simple como vincularlo simbólicamente:

ln -s /usr/local/bin/git ~/bin/git

información relacionada