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?
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?
Respostas:
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.
/usr/local/binacima /usr/binno /etc/paths.
brew doctorpara diagnosticar o problema
/etc/paths. Definindo apenas o "exportação" pode não ser suficiente, se /usr/bintem "precedência" sobre /usr/local/bin(de cerveja) ...
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 ! :)
which gitapontando /usr/local/bin/git, isso não funcionou para mim. Para resolver isso, tive que desinstalar o aplicativo GitHub Mac.
sudo mv /usr/bin/git /usr/bin/git-apple mv: rename /usr/bin/git to /usr/bin/git-apple: Operation not permitted
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
brew link --overwrite gittrabalhou para mim
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.
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 é
renomeie o local original renomeando-o usando mv. Por exemplo
sudo mv / usr / bin / git / usr / bin / git-ORIGINAL
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.
/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
Eu tentei isso e funciona para mim.
brew link --overwrite git
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á.
/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.
Instale o git com o brew, execute-o.
brew link --force git
Feche e reabra o terminal para executar which git.
brew link --overwrite gitfuncionou
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.
/usr/local/bin/gitgit --version, se ele retornar a versão antiga da Apple do git, continue abaixocd ~ (mude o diretório para o seu diretório pessoal)vi .bashrci(para inserir texto no editor vi)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):wq(para salvar o .bashrcarquivo)git --version(você deve ver a nova versão)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.
/usr/bin/git...
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.
brew doctore corrigir todas as outras dificuldadesbrew upgradepara atualizar todos os pacotes de uma só vez