Como usar o git Homebrew instalado no Mac?

115

Instalei a versão mais recente do git (1.8.3) usando homebrew, mas quando digito

git --version

no meu terminal, ele imprime:

git version 1.7.10.2 (Apple Git-33)

O que devo fazer para substituir a versão antiga do git pela nova?

Levani
fonte
2
Você tem algumas boas respostas - então eu queria comentar sobre a pergunta. Você está procurando instruções explícitas para instalar o git a partir da fonte do homebrew ou de um cliente da GUI ou apenas a confirmação de que o OS X agrupa várias versões do git no sistema operacional principal? opensource.apple.com/source/Git (FWIW - O último git Eu vi a Apple pacote até à data é 1.7.12.4, que vem de Git-37)
bmike

Respostas:

105

Obrigado a todos por respostas úteis. No meu caso adicionando

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

em ~/.bash_profileseguido por

source ~/.bash_profile

resolveu o problema para o meu usuário.

Levani
fonte
17
Se você quer a mudança persistente entre os usuários, você pode mover-se /usr/local/binacima /usr/binno /etc/paths.
kevin
3
Esta é a solução proposta por si só ao executar Homebrew brew doctorpara diagnosticar o problema
VoxPelli
1
essa resposta deve ser atualizada com a solução de definição proposta por KevinT /etc/paths. Definindo apenas o "exportação" pode não ser suficiente, se /usr/bintem "precedência" sobre /usr/local/bin(de cerveja) ...
emgsilva
8
Lembre-se de reiniciar o terminal! Não me ocorreu até que vi o comentário de Juan Diego Gonzales abaixo
Souleiman
2
@Souleiman: Reiniciar não é necessário. source ~/.bash_profilevai reler isso. Reiniciar é provavelmente mais rápido / fácil. :)
43

Ok, estou pronto para levar a sério o scm.

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

Não, não era isso que eu queria. Eu <3 homebrew, então:

$ brew install git

Tudo pronto?

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

Doh! (coça a cabeça)

$ which git
/usr/bin/git

Ah, o git da Apple está em / usr / bin, então supera o do homebrew. O que fazer?

(A) Apenas renomeie o binário da Apple

(B) Que um gerenciado por homebrew tenha precedência:

[editar exportação PATH, por exemplo, em ~ / .zshrc (oh-my-zsh + iTerm2 FTW! / tangente)]

[especificamente: mova / usr / local / bin / git: antes de / usr / bin:]

... e / ou (por exemplo, para permitir de forma mais ampla que o homebrew trunfo a instalação do sistema e a precedência se aplique a todos os shells e usuários) também edite o arquivo / etc / caminhos, [movendo / usr / local / bin acima / usr / bin ]

Mas assumindo apenas a abordagem mais simples / menos invasiva:

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

Funcionou?

$ which git
/usr/local/bin/git

Até aí tudo bem, agora é o momento da verdade:

$ git --version
git version 2.2.1

w00t! :) Hora de ler http://git-scm.com ! :)

semanalmente
fonte
PS Rel para comentários sobre os riscos da edição / usr / bin: IMHO é NBD. (Eu gosto da sugestão do Global nômade de fazer "sudo ln -s / usr / local / bin / git / usr / bin / git" ... o que garante que qualquer coisa que chame "/ usr / bin / git" seja explicitamente seu gerenciado por fermentação. Mas, na minha opinião, a instalação do git implica que você esteja assumindo a propriedade do git no seu sistema. Preocupações com processos desconhecidos usando uma versão alternativa mais antiga do git podem estar fora de lugar. Eu recomendo manter-se atualizado com versões git (por segurança, não apenas recursos), e gerenciar it yourself Homebrew torna isso fácil /$0.02..
cweekly
Isso não funcionou para mim, para desfazê-lo, basta fazer: sudo mv / usr / bin / git-apple / usr / bin / git. O comentário de Juan Diego Gonzales funcionou. (basicamente, siga a resposta aceita e reinicie o terminal).
Souleiman
Mesmo which gitapontando /usr/local/bin/git, isso não funcionou para mim. Para resolver isso, tive que desinstalar o aplicativo 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
Estes dias, parece homebrew se põe a "frente" do caminho por isso espero que não precisava mais :)
rogerdpack
32

Status 2019

Todos os truques mencionados aqui em várias respostas não são mais necessários no macOS Sierra & Mojave com o Homebrew mais recente. Esquecer export PATH="..."e modificações para ~/.bash_profile.

Você simplesmente faz

brew install git

e pronto.

Para confirmar, abra uma nova janela do terminal (!) E digite

git --version
Jpsy
fonte
16
Eu acho que isso é certo, mas você precisa para abrir um novo terminal ou a mudança não é captado
robjwilkins
Infelizmente, isso não funciona para mim.
rsp1984
2
Isso funcionou para mim no Mojave. Eu tive que abrir um novo terminal.
Craig Otis
2
brew link --overwrite gittrabalhou para mim
wickdninja 20/02
9

Depois de instalar o git mais recente via brew ( brew install git), execute este procedimento (como sugerido por brew doctor) se ele ainda não estiver lá:

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

Saia do Terminal e abra-o novamente (reinicie a sessão do bash). Você precisa fazer isso mesmo se seu PATH já estiver correto, pois o ZSH e o Bash armazenam em cache o conteúdo do PATH (consulte a documentação no comando interno hash).

Isso deve consertar as coisas muito rápido.

Juan Diego Gonzales
fonte
1
Como isso difere da resposta aceita?
Mark
6
No meu caso, eu não sabia que tinha que reiniciar o Terminal, para que essa parte possa ajudar algumas pessoas. É mais rápido que o aceito por causa de um forro. Se é uma competição, acho que minha resposta está equivocada. Caso contrário, acho que contribui. (Diga-me se você deseja que eu faça uma edição em vez disso).
Juan Diego Gonzales
Você faz isso um forro quando você instala o Homebrew
Mark
7
Achei esta resposta útil. Reiniciar o terminal é um problema não óbvio para muitas pessoas não familiarizadas com o funcionamento do .bash_profile e um lembrete gentil para o resto de nós.
Magne
@JuanDiegoGonzales Excelente observação! Fiquei me perguntando exatamente a mesma coisa depois de instalar o git e não sabia o porquê. Após o cache de sugestão, eu fiz um pouco mais de pesquisa: unix.stackexchange.com/q/5609/52921
kstratis
4

Quando você digita

git --version

no Terminal.app ou console, seu comentário em outra pergunta indica que a versão retornada é o git em / usr / bin / git

Se você instalou o Xcode 4.5 (e mais recente) e digite

xcrun git --version

no Terminal.app ou console, a versão retornada é o git no pacote de aplicativos do Xcode.

Se você estiver usando o Homebrew para instalar e atualizar o git, a solução mais simples é

  1. verifique se você possui direitos de administrador, pois será solicitada a senha do administrador
  2. renomeie o local original renomeando-o usando mv. Por exemplo

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

  3. crie um link flexível usando 'ln -s' para o binário git que você instalou com o Homebrew.

Observe que o MattDMo tem uma solução melhor nos comentários.

Nômade global
fonte
Isso é 100% seguro? Será que vai quebrar alguma coisa relacionada ao Mac?
Levani
Se você seguir as etapas descritas, a solução não quebrará nada pré-instalado, pois os executáveis ​​do git não são excluídos. É por isso que no passo 2, você deve renomear o / usr / bin / git original para por exemplo, como /usr/bin/git.BACKUP
Global Nomad
10
Por favor, não faça isso - você realmente não deveria estar brincando /usr/bin, pois é possível que outros programas que você nem conhece dependem de caprichos associados a uma versão específica. A solução mais fácil, sem mover qualquer coisa, é para adicionar /usr/local/binà sua $PATHvariável de ambiente antes /usr/bin- IIRC, homebrew instala/usr/local/bin
MattDMo
Obrigado @MattDMo, essa parece ser a melhor abordagem nesse caso.
Levani
2

Eu tentei isso e funciona para mim.

brew link --overwrite git
Song WANG
fonte
Trabalhou para mim no Mojave (10.14.4)
apimentado em
1

Você precisa renomear o git original da apple /usr/bin/para, por exemplo, git-org, já que /usr/binnormalmente é anterior /usr/local/binao diretório do caminho, onde está o material de preparação.

Assim:

cd /usr/bin
sudo mv git git-org

e não se esqueça de vincular o brew git

brew link git

Isso pressupõe que /usr/local/binesteja na sua $PATHvariável de ambiente. Se você ainda tiver problemas, tente executar

brew doctor 

e corrija os problemas mencionados lá.

Pfitz
fonte
3
Não renomeie ou altere as coisas em / usr / bin, pois isso pode danificar os galhos da Apple e eles serão danificados quando você fizer uma atualização do sistema ou do XCode. use o caminho para o qual ele foi projetado, #
Mark
@ Mark você tem razão. Mas não acredito que você terá problemas se alterar apenas o git em / usr / bin. Para mim, está trabalhando por vários meses.
Pfitz
Concordo que mudar normalmente as coisas no / usr / bin é uma má notícia, mas não consigo me lembrar do OS X realmente usando o git; portanto, os danos podem ser minúsculos e relacionados apenas a um sistema "limpo" que corresponde aos recibos. O dano seria uma atualização para o OS X pode substituir o novo git por uma versão mais antiga, portanto, a prática normal de localizar um novo binário fora do local do caminho do sistema.
bmike
3
Eu acho que seria muito mais fácil adicionar /usr/local/bin(homebrew do diretório de instalação, IIRC) à $PATHfrente de /usr/bin, em vez de perder tempo com renomeação e backup, etc.
MattDMo
1

Instale o git com o brew, execute-o.

brew link --force git

Feche e reabra o terminal para executar which git.

John
fonte
1
Como isso muda o caminho padrão?
Mark
Isso funcionou para eu substituir o git do xcode.
surjikal
Eu recebi um erro ao executar isso, mas brew link --overwrite gitfuncionou
wickdninja 20/02
0

Se você estiver instalando o git diretamente do git-scm.com e quiser usar o último git baixado em vez da versão apple (antiga) do git.

  1. Instale o git em git-scm.com
  2. Provavelmente o novo git será instalado no /usr/local/bin/git
  3. Tente git --version, se ele retornar a versão antiga da Apple do git, continue abaixo
  4. cd ~ (mude o diretório para o seu diretório pessoal)
  5. tipo vi .bashrc
  6. Use i(para inserir texto no editor vi)
  7. Se você encontrar uma linha com export PATH......., pressione enter na parte superior da exportação e digite o seguinte: export PATH=/usr/local/:$PATH(Preste muita atenção com a PATHvariável, não estrague tudo, pois isso causará problemas ao seu sistema operacional) (esperamos que o novo git seja instalado /usr/local/git)
  8. Pressione esc
  9. Digite :wq(para salvar o .bashrcarquivo)
  10. Saia do terminal e inicie o novo terminal
  11. Agora tente git --version(você deve ver a nova versão)
dataramr
fonte
-1

Depende de onde seu git vem. O Xcode traz uma versão, por exemplo, que talvez esteja aberta no seu caminho.

Talvez digitando

which git

mostrará onde está o antigo.

Nicholaz
fonte
ele está em /usr/bin/git...
Levani
2
Parece duas instalações. Eu acho que o (download) versão normal git vai para / usr / local / git / ... É então uma questão de acrescentar que para o caminho ou remover o outro (ou ambos)
Nicholaz
-2

Para atualizar qualquer coisa usando o Homebrew no OSX que envolva compilação usando o gcc, verifique se você tem as Ferramentas de Linha de Comando atualizadas do Xcode - sim, eu sei, é uma pena ter que esconder uma ferramenta em todo o sistema nas preferências de um aplicativo.

Passos

  1. Vá para Xcode.app -> Preferências -> Downloads
  2. Atualizar (ou instalar) ferramentas de linha de comando
  3. Executar brew doctore corrigir todas as outras dificuldades
  4. Execute brew upgradepara atualizar todos os pacotes de uma só vez
iGbanam
fonte