¿Cómo usar el Homebrew instalado git en Mac?

116

He instalado la versión más nueva de git (1.8.3) usando homebrew pero cuando escribo

git --version

en mi terminal, imprime:

git version 1.7.10.2 (Apple Git-33)

¿Qué debo hacer para reemplazar la versión anterior de git por la nueva?

Levani
fuente
2
Tienes un par de buenas respuestas, así que quería comentar sobre la pregunta. ¿Está buscando instrucciones explícitas para instalar git desde la fuente de homebrew o un cliente GUI o simplemente confirma que OS X incluye varias versiones de git con el sistema operativo central? opensource.apple.com/source/Git (FWIW - El git más nuevo que he visto el paquete de Apple hasta la fecha es 1.7.12.4 que viene de Git-37)
bmike

Respuestas:

106

Gracias a todos por las respuestas útiles. En mi caso agregando

export PATH="/usr/local/bin:${PATH}"

en ~/.bash_profileseguido de

source ~/.bash_profile

resuelto el problema para mi usuario.

Levani
fuente
17
Si desea que el cambio persistente en los usuarios, puede pasar /usr/local/binpor encima /usr/binde /etc/paths.
Kevin
3
Esta es la solución propuesta por Homebrew cuando se ejecuta brew doctorpara diagnosticar el problema
VoxPelli
1
esta respuesta debe actualizarse con la solución de definición propuesta por KevinT /etc/paths. Definir solo la "exportación" puede no ser suficiente, si /usr/bintiene "prioridad" sobre /usr/local/bin(del brew) ...
emgsilva
8
¡Recuerde reiniciar el terminal! No se me ocurrió hasta que vi el comentario de Juan Diego Gonzales a continuación
Souleiman
2
@Souleiman: no es necesario reiniciar. source ~/.bash_profilevolverá a leer eso. Reiniciar es probablemente más rápido / más fácil. :)
44

Ok, estoy listo para tomarme en serio la ciencia ficción.

$ git --version
git version 1.9.5 (Apple Git-50.3)

No, eso no es lo que quería. I <3 homebrew, entonces:

$ brew install git

¿Todo listo?

$ git --version
git version 1.9.5 (Apple Git-50.3)

Doh! (rasca la cabeza)

$ which git
/usr/bin/git

Ah, el git de Apple está en / usr / bin, por lo que supera al homebrew. ¿Qué hacer?

(A) Simplemente cambie el nombre del binario de Apple

(B) Deje que uno administrado por homebrew tenga prioridad:

[editar PATH exportar, por ejemplo, en ~ / .zshrc (oh-my-zsh + iTerm2 FTW! / tangent)]

[específicamente: move / usr / local / bin / git: before / usr / bin:]

... y / o (por ejemplo, para permitir más ampliamente que las cosas de homebrew triunfen en las instalaciones del sistema y que la prioridad se aplique a todos los shells y usuarios) también edite el archivo / etc / path, [moving / usr / local / bin encima / usr / bin ]

Pero suponiendo solo el enfoque más simple / menos invasivo:

$ sudo mv /usr/bin/git /usr/bin/git-apple

¿Funcionó?

$ which git
/usr/local/bin/git

Hasta ahora todo bien, ahora el momento de la verdad:

$ git --version
git version 2.2.1

w00t! :) ¡Es hora de ir a leer http://git-scm.com ! :)

cada dos semanas
fuente
PS Rel a los comentarios sobre los riesgos de edición / usr / bin: en mi humilde opinión es NBD. (Aunque me gusta la sugerencia de Global Nomad de hacer "sudo ln -s / usr / local / bin / git / usr / bin / git" ... lo que garantiza que cualquier cosa que llame a "/ usr / bin / git" explícitamente obtendrá la tuya es administrada por brew. Pero mi opinión es que la instalación de git implica que estás tomando posesión de git en tu sistema. Las preocupaciones sobre procesos desconocidos que usan una versión alternativa más antigua de git, podrían estar fuera de lugar. Recomiendo mantenerte actualizado con versiones Git (por seguridad, no sólo cuenta), y la gestión de usted mismo Homebrew lo hace fácil /$0.02..
cweekly
Esto no funcionó para mí, para deshacerlo, solo haga: sudo mv / usr / bin / git-apple / usr / bin / git. El comentario de Juan Diego Gonzales funcionó. (básicamente, siga la respuesta aceptada y luego reinicie el terminal).
Souleiman
Incluso which gitseñalando /usr/local/bin/git, esto no funcionó para mí. Para resolver esto, tuve que desinstalar la aplicación GitHub Mac.
Ben
2
MacOS 10.12.5:sudo mv /usr/bin/git /usr/bin/git-apple mv: rename /usr/bin/git to /usr/bin/git-apple: Operation not permitted
Vladislav Rastrusny
En estos días parece que homebrew se coloca en el "frente" de la RUTA, así que espero que ya no sea necesario :)
rogerdpack
32

Estado 2019

Todos los trucos mencionados aquí en varias respuestas ya no son necesarios en macOS Sierra & Mojave con el último Homebrew. Olvídate export PATH="..."y modificaciones a ~/.bash_profile.

Simplemente lo haces

brew install git

y listo

Para confirmar, abra una nueva ventana de terminal (!) Y escriba

git --version
Jpsy
fuente
16
Creo que esto es correcto, pero debe abrir una nueva terminal o el cambio no se
recogerá
Esto no funciona para mí desafortunadamente.
rsp1984
2
Esto funcionó para mí en Mojave. Yo tenía que abrir una nueva terminal.
Craig Otis
2
brew link --overwrite gitfuncionó para mí
wickdninja
9

Una vez que haya instalado el último git a través de brew ( brew install git), ejecute esta línea (como lo sugiere brew doctor) si aún no está allí:

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

Luego salga de Terminal y ábralo nuevamente (reinicie su sesión bash). Debe hacer esto incluso si su RUTA ya era correcta, ya que ZSH y Bash almacenan en caché el contenido de RUTA (consulte la documentación sobre el comando incorporado hash).

Eso debería arreglar las cosas muy rápido.

Juan Diego Gonzales
fuente
1
¿Cómo difiere esto de la respuesta aceptada?
user151019
66
En mi caso, no sabía que tenía que reiniciar Terminal, por lo que esa parte puede ayudar a algunas personas. Es más rápido de lo aceptado debido al revestimiento único. Si es una competencia, creo que mi respuesta está fuera de lugar. De lo contrario, creo que contribuye. (Dime si quieres que haga una edición en lugar de esto).
Juan Diego Gonzales
Haces ese único revestimiento cuando instalas Homebrew
user151019
77
Encontré esta respuesta útil. Reiniciar el terminal es un problema no obvio para muchas personas que no están familiarizadas con el funcionamiento de .bash_profile, y un recordatorio amable para el resto de nosotros.
Magne
@JuanDiegoGonzales Excelente observación! Me preguntaba exactamente lo mismo después de instalar git y no sabía por qué. Después de la sugerencia de caché , investigué un poco más: unix.stackexchange.com/q/5609/52921
kstratis
4

Cuando escribes

git --version

en Terminal.app o consola, su comentario sobre otra pregunta indica que la versión que devuelve es el git en / usr / bin / git

Si instaló Xcode 4.5 (y más reciente), y escriba

xcrun git --version

en Terminal.app o consola, la versión que devuelve es el git en el paquete de la aplicación Xcode.

Si está utilizando Homebrew para instalar y actualizar git, la solución más simple es

  1. asegúrese de tener derechos de administrador ya que se le pedirá la contraseña para el administrador
  2. cambie el nombre de la ubicación original renombrándola usando mv. Por ejemplo

    sudo mv / usr / bin / git / usr / bin / git-ORIGINAL

  3. cree un enlace suave usando 'ln -s' al binario git que instaló con Homebrew.

Tenga en cuenta que MattDMo tiene una mejor solución en los comentarios.

Nómada global
fuente
¿Es esto 100% seguro? ¿Romperá algo relacionado con Mac?
Levani
Si sigue los pasos descritos, la solución no romperá nada preinstalado ya que esos ejecutables de git no se eliminan. Es por eso que en el paso 2 debe cambiar el nombre de su / usr / bin / git original, por ejemplo, como /usr/bin/git.BACKUP
Global nomad
10
Por favor, no hagas esto, realmente no deberías estar jugando /usr/bin, ya que es posible que otros programas que ni siquiera conoces dependan de los caprichos asociados con una versión en particular. La solución más fácil, sin mover nada, es agregar /usr/local/bina su $PATHvariable de entorno antes /usr/bin- IIRC, homebrew se instala en/usr/local/bin
MattDMo
Gracias @MattDMo, ese parece ser el mejor enfoque en este caso.
Levani
2

Intenté esto y me funciona.

brew link --overwrite git
Song WANG
fuente
Trabajó para mí en Mojave (10.14.4)
salpicado el
1

Debe cambiar el nombre del git original por apple en, /usr/bin/por ejemplo, git-org, ya /usr/binque normalmente está antes /usr/local/binen su directorio de ruta donde está el material de preparación.

Entonces:

cd /usr/bin
sudo mv git git-org

y no olvides vincular el brew git

brew link git

Esto supone que /usr/local/binestá en su $PATHvariable de entorno. Si aún tiene problemas, intente ejecutar

brew doctor 

y solucionar los problemas mencionados allí.

Pfitz
fuente
3
No cambie el nombre o cambie las cosas en / usr / bin ya que podría romper las aplicaciones de Apple y se dañarán cuando realice una actualización del sistema o XCode. use la ruta para la que está diseñada,
user151019
@ Mark tienes un punto. Pero no creo que tenga problemas si cambia solo git en / usr / bin. Para mí está funcionando durante varios meses.
Pfitz
Estoy de acuerdo en que normalmente cambiar las cosas en / usr / bin es una mala noticia, pero no puedo recordar que OS X realmente use git, por lo que el daño puede ser minúsculo y solo se relaciona con un sistema "limpio" que coincide con los recibos. El daño sería que una actualización de OS X podría reemplazar el nuevo git con una versión anterior, de ahí la práctica normal de ubicar un nuevo binario fuera de la ubicación de la ruta del sistema.
bmike
3
Creo que sería mucho más fácil agregar /usr/local/bin(directorio de instalación de homebrew, IIRC) al $PATHfrente en /usr/binlugar de perder el tiempo con el cambio de nombre y la copia de seguridad, etc.
MattDMo
1

Instale git con brew, ejecute esto.

brew link --force git

Cierre y vuelva a abrir la terminal para ejecutar which git.

John
fuente
1
¿Cómo cambia eso la ruta predeterminada?
user151019
Esto funcionó para mí para anular el git de xcode.
surjikal
Recibí un error al ejecutar esto, pero brew link --overwrite gitfuncionó
wickdninja
0

Si está instalando git desde git-scm.com directamente y desea utilizar la última versión descargada de git en lugar de la versión de Apple (antigua) de git.

  1. Instale git desde git-scm.com
  2. Lo más probable es que se instale git nuevo en /usr/local/bin/git
  3. Intente git --version, si devuelve la versión anterior de Apple de git, continúe a continuación
  4. cd ~ (cambie el directorio a su directorio de inicio)
  5. tipo vi .bashrc
  6. Usar i(para insertar texto en el editor vi)
  7. Si encuentra una línea con export PATH......., presione Intro en la parte superior de la exportación y escriba lo siguiente: export PATH=/usr/local/:$PATH(Tenga mucho cuidado con la PATHvariable, no la estropee, de lo contrario causará problemas para su sistema operativo) (con suerte, se debe instalar un nuevo git /usr/local/git)
  8. Presione esc
  9. Ingrese :wq(para guardar el .bashrcarchivo)
  10. Salga de la terminal e inicie una nueva terminal
  11. Ahora intente git --version(debería ver una nueva versión)
dataramr
fuente
-1

Depende de dónde provenga tu git. Xcode trae una versión, por ejemplo, tal vez eso sea por adelantado en su camino.

Tal vez escribiendo

which git

mostrará dónde está el viejo.

Nicholaz
fuente
está en /usr/bin/git...
Levani
2
Eso parece dos instalaciones. Creo que la versión normal (descargable) de git va a / usr / local / git / ... Entonces se trata de agregar eso a la ruta o eliminar el otro (o ambos)
Nicholaz
-2

Para actualizar cualquier cosa usando Homebrew en OSX que implique compilación usando gcc, asegúrese de tener las herramientas de línea de comandos actualizadas de Xcode; sí, lo sé, apesta tener que ocultar una herramienta de todo el sistema en las preferencias de una aplicación.

Pasos

  1. Vaya a Xcode.app -> Preferencias -> Descargas
  2. Actualizar (o instalar) herramientas de línea de comandos
  3. Ejecute brew doctory repare todos los demás obstáculos
  4. Ejecutar brew upgradepara actualizar todos los paquetes a la vez
iGbanam
fuente