atualizou o git local no Lion, e agora?

2

Eu reformatei minha máquina com o Lion, que tinha essa versão padrão do git:

$ git --version
git version 1.7.7.5 (Apple Git-26)

Eu decidi atualizar o git, então eu fiz:

$ brew install git
==> Downloading http://git-core.googlecode.com/files/git-1.7.10.4.tar.gz
######################################################################## 100.0%
==> make prefix=/usr/local/Cellar/git/1.7.10.4 CC=/usr/bin/clang CFLAGS=-Os -w -pipe -    march=native -Qunused-arguments LDFLAGS= install
==> make CC=/usr/bin/clang CFLAGS=-Os -w -pipe -march=native -Qunused-arguments LDFLAGS=
==> make clean 
==> Downloading http://git-core.googlecode.com/files/git-manpages-1.7.10.4.tar.gz
######################################################################## 100.0%
==> Downloading http://git-core.googlecode.com/files/git-htmldocs-1.7.10.4.tar.gz
######################################################################## 100.0%
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

The OS X keychain credential helper has been installed to:
  /usr/local/bin/git-credential-osxkeychain

The 'contrib' directory has been installed to:
  /usr/local/share/git-core/contrib
==> Summary
/usr/local/Cellar/git/1.7.10.4: 1173 files, 23M, built in 39 seconds

Infelizmente, o git não foi atualizado:

$ git --version
git version 1.7.7.5 (Apple Git-26)

Sou novo no Terminal / Linha de Comando e em todas as coisas do Unix, por isso não sei qual será o meu próximo passo. Eu estou supondo que "Advertências" está me dizendo que eu deveria fazer algo porque este git atualizado não é onde o git padrão está. Então, preciso adicionar esses caminhos ao meu PATH? Se sim, como faço isso? Se não, o que eu faço agora?

Obrigado

    
por AdamT 09.06.2012 / 07:05

2 respostas

5

Está correto. /usr/local/bin ou equivalente precisa ser adicionado ao seu PATH , porque é onde brew instala o software. Além disso, ele precisará estar à frente de qualquer diretório em que o Git padrão esteja. (Nota: vou passar devagar, apenas para facilitar você no mundo Unix).

Antes de fazer um movimento para corrigir o PATH, faça isso no Terminal:

which git

e veja em qual diretório o Git está atualmente sendo encontrado. Esse é o diretório que você precisa vencer. Escreva também isto:

echo $SHELL

Espero que você veja '/ bin / bash', já que é o que eu vou assumir que você está usando. Se não, avise-nos.

O mais fácil é simplesmente colocar /usr/local/bin na frente do PATH. Isso é feito tradicionalmente em um arquivo de configuração para o seu shell que é executado quando você inicializa um Terminal. Para o shell bash, é ~/.bash_profile (onde ~ é o apelido para o diretório inicial). Vá em frente e crie um arquivo de texto lá, se você não o tiver, e adicione esta linha:

export PATH=/usr/local/bin:$PATH

(Nota: use um editor de texto adequado aqui, como TextWrangler ou Xcode ou o editor do seu programador favorito, em vez do TextEdit que gosta de salvar arquivos RTF.)

O ':' separa diretórios na variável PATH, e $PATH expande para a definição atual (pré-atribuição) desta variável de ambiente. Em suma, este comando prepends /usr/local/bin para seu PATH, então exporta o PATH atualizado para o seu ambiente, para que outros programas executados a partir do shell possam ver e usar o PATH atualizado. (Observação: tudo bem se /usr/local/bin vier mais tarde no PATH. Você pode remover a segunda cópia e definir PATH para o valor completamente adulterado, se decidir manter /usr/local/bin na frente). / p>

Salve esse arquivo, saia do Terminal e reinicie-o. Crie uma nova janela do Terminal e digite:

echo $PATH

Agora você deve ver /usr/local/bin na frente. Execute git --version e verifique se você está vendo a versão esperada.

Tendo feito isso, o que poderia dar errado? Bem, em alguns casos, você pode ter instalado algo em /usr/local/bin que não é tão estável quanto seus aplicativos de sistema padrão e, portanto, você pode não querer que tudo nesse diretório tenha precedência sobre o PATH padrão. Se isso acontecer com você, uma solução comum é criar um novo diretório que tenha apenas referências aos programas específicos que você deseja encontrar antes dos programas padrão do sistema na pesquisa:

  1. crie um novo diretório, por exemplo %código%
  2. coloque esse diretório na frente do PATH em vez de ~/bin
  3. no Terminal, execute /usr/local/bin para criar um link simbólico chamado ln -s /usr/local/bin/git ~/bin/git no novo diretório, apontando para o git that git installed. (Links simbólicos são semelhantes a "atalhos" no mundo do Windows, se você estiver familiarizado com eles.)
  4. saia e reinicie o Terminal e teste para garantir que o programa correto desejado esteja sendo selecionado quando você executar brew .

Também devo observar que há uma maneira mais avançada e específica do Mac de configurar o PATH. Envolve criar / alterar sua configuração de git . Para fazer isso, primeiro descubra o caminho completo (isto é, não envolvendo definições anteriores de environment.plist ) de que você precisa:

echo $PATH

Depois disso, execute isto:

defaults write ~/.MacOSX/environment PATH ...

onde $PATH é substituído pelo caminho que você deseja que seja o padrão do sistema. Coloque seu diretório na frente ( ... ou qualquer outra coisa), não esqueça do ':', e copie / cole o valor de eco do PATH no final. Então, para ter certeza de que sua configuração do Mac e sua configuração de shell estão na mesma página, vá para ~ / .bash_profile e onde você tinha a linha /usr/local/bin , faça isso:

export PATH='defaults read ~/.MacOSX/environment.plist PATH'

É assim que eu configuro o PATH no meu Mac.

Por que passar por todo esse problema? Porque, ao contrário do PATH definido em export PATH , esse padrão pode ser visto por aplicativos de GUI que são iniciados pelo Finder ou Spotlight. No entanto, para as operações do Git você estará executando a partir da linha de comando, você não precisará dele. Além disso, muitos aplicativos de GUI que usam o Git também podem receber o caminho absoluto ( ~/.bash_profile ) para o programa Git, caso precisem executá-lo. Então você pode ser capaz de fugir sem ter que passar por esses aros extras. Mas agora você sabe o truque, apenas no caso de ser necessário mais tarde.

Happy Git hacking!

    
por 09.06.2012 / 08:52
3

Eu estava tendo exatamente o mesmo problema. Owen teve a resposta geral mais completa.

Dito isso, fiz mais algumas pesquisas e descobri o que acredito ser uma maneira muito mais fácil.

environment.plist cria o caminho usado por /private/etc/paths

Então, no terminal, basta digitar sudo nano /private/etc/paths e digitar sua senha de root.

Assim que estiver no nano, você provavelmente verá /usr/bin primeiro e /usr/local/bin por último. (Nota: Tudo precisa estar em uma linha separada!) Tudo que fiz foi digitar /usr/local/bin primeiro e, em seguida, removê-lo da última linha.

Saia do terminal, faça logout e faça login novamente.

Volte para o terminal e digite git --version e você deve ser de ouro.

    
por 17.07.2012 / 09:59