A tentativa de atualizar o Git no Mac OS X e desinstalar o Git antigo falha

A tentativa de atualizar o Git no Mac OS X e desinstalar o Git antigo falha

Estou tentando atualizar o git no meu Mac OS X 10.8.5 (Mountain Lion).

Eu baixei esta nova versão emesse link, cliquei duas vezes em .dmge arrastei uninstall.shpara o meu terminal (seguindo as instruções) para desinstalar a versão antiga e recebo:

Git doesn't appear to be installed via this installer.  Aborting

Observe que gitestá atualmente instalado no meu computador.

$ git --version
git version 1.7.9.6 (Apple Git-31.1)
$ which git
/usr/bin/git 

Por que não consigo desinstalar? Como posso atualizar git?

Responder1

Em um Mac a maneira mais fácil é usarcerveja caseira.

  1. Instalar cerveja
  2. Siga as instruções ( brew doctordirerá para você atualizar $PATHseu/usr/local/bin:$PATH
  3. brew install git

E pare de se preocupar com atualizações manuais, apenas execute brew update && brew upgradede vez em quando

Por que você não pode instalar o existente:

  • A Apple tem uma instalação git padrão que o Xcode usa (presumindo que você instalou o Xcode ou pelo menos os utilitários de linha de comando)

Responder2

Resposta mais curta.

Não há necessidade de desinstalar o Xcode gitque você está vendo no Mac OS X. Basta adicionar /usr/local/git/binao seu $PATHeditando ~/.bash_profilepara adicionar algo export PATHcomo este:

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

Em seguida, feche e salve esse arquivo e carregue-o em sua sessão do Terminal, digitando isto:

source ~/.bash_profile

E o recém-instalado gitestará acessível para você de preferência ao Xcode instalado gitque você já possui.

Resposta mais longa.

Interpretando a mensagem de erro.

O problema pode ser entendido observando o conteúdo do uninstall.shscript Bash que vem como pacote de instalação oficial do Git para Mac OS Xpara ver exatamente o que ele faz. Aqui está o trecho próximo ao topo que gera o erro que você está vendo:

#!/bin/bash
if [ ! -r "/usr/local/git" ]; then
  echo "Git doesn't appear to be installed via this installer.  Aborting"
  exit 1
fi

Observe a linha if [ ! -r "/usr/local/git" ]; then, o script Bash está verificando a existência deste caminho de diretório:

/usr/local/git/

Mas quando você executou which gito caminho do diretório que você obteve foi:

/usr/bin/ 

Isso indica que o instalador oficial instala gitseus itens /usr/local/git/e não no diretório principal do Mac OS X de /usr/bin/.

Então, qual é essa outra versão que gitvocê já possui? Vamos verificar a saída de git --versionpara mais detalhes:

$ git --version
git version 1.7.9.6 (Apple Git-31.1)

Você viu isso (Apple Git-31.1)? Isso indica que foi instalado pela Apple. E como gitnão faz parte da configuração principal do Mac OS X, a única maneira de instalá-lo seria via Xcode e binários de linha de comando relacionados.

Resumindo, você não pode – e não deve – tentar desinstalar a versão Xcode do git. Em vez disso, você deseja fazer com que seu Terminal favoreça os gitbinários instalados em /usr/local/git/bin/vez dos binários principais do Mac OS X no formato /usr/bin/. E você pode fazer isso modificando sua $PATHconfiguração ~/.bash_profileassim.

Resolvendo o problema.

Primeiro, abra ~/.bash_profileem um editor de texto. Eu prefiro fazer isso diretamente na linha de comando usando nanoassim:

nano ~/.bash_profile

Agora, se não export $PATHexistir ~/.bash_profile, basta adicionar uma $PATHlinha como esta ao arquivo:

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

Se export $PATHexistir um lá, faça uma modificação nesse valor para ficar /usr/local/git/binantes do principal $PATHdo sistema. Observe o :delimitador.

Agora feche e salve esse arquivo e carregue-o em sua sessão do Terminal, digitando isto:

source ~/.bash_profile

Agora se você digitar:

which git

A saída deve ser:

/usr/local/git/bin/git

O que significa que seu Terminal $PATHagora fará check-in /usr/local/git/bin/antes de prosseguir para verificar outros diretórios em seus $PATHvalores padrão para o gitbinário.

Portanto, sem desinstalar a versão Xcode, gitagora você pode baixar e instalar o binário oficial - e atualizado - gite usá-lo sem lidar com o Homebrew ou qualquer outra coisa. Por exemplo, no meu sistema esta é a saída atual da git --versionseguinte forma:

git version 2.5.3

Não (Apple Git-31.1)à vista. Apenas um gitnúmero de versão puro, atualizado e pronto para uso graças a este $PATHajuste.

Responder3

Ter gitinstalado simplesmente não é suficiente. Lembre-se também de que isso gitsó funcionará se você estiver cdem uma pasta funcional do repositório git. Isso significa que você deverá ver uma ./.gitpasta (dica: use ls -lapara ver pastas ocultas) e git statusdeverá retornar algo semelhante ao exemplo abaixo:

[some_repo]$ git status
On branch master
Your branch is up-to-date with 'origin/prod'.
nothing to commit, working directory clean

mas se a pasta não for um repositório git válido, você verá algo assim:

[~]$ git status
fatal: Not a git repository (or any of the parent directories): .git

informação relacionada