6 erros comuns do Git e como evitá-los

Início » 6 erros comuns do Git e como evitá-los

Um Sistema de Controle de Versão (VCS) é uma ferramenta essencial para quase qualquer equipe de desenvolvimento que precisa acompanhar as mudanças no código-fonte. O Git foi desenvolvido em 2005 e hoje é de longe o VCS mais comumente usado por quase todas as equipes de desenvolvimento que precisam criar versões e arquivar seu código-fonte. No artigo de hoje, vamos cobrir alguns dos erros comuns do Git e discutir como você pode evitá-los ou corrigi-los.

fatal: not a git repository (or any of the parent directories)

Este é um dos erros mais comuns, especialmente para iniciantes no Git. Suponhamos que você queira executar git status em um determinado diretório:

O erro indica que o comando não pode ser executado porque o diretório atual não é um diretório Git. Normalmente, há dois motivos principais pelos quais você pode estar recebendo o erro.

  • ou você provavelmente está no diretório errado. Você pode verificar seu diretório de trabalho atual usando pwd. É muito comum as pessoas esquecerem de mudar o diretório ao clonar um repositório Git.

fatal: refusing to merge unrelated histories

Outro erro muito comum após git pull ou git merge é o mostrado abaixo:

fatal: refusing to merge unrelated histories

Isso geralmente pode acontecer principalmente por dois motivos;

  • O diretório .git foi corrompido. Este diretório oculto contém informações relevantes para o seu projeto que está sendo controlado por versão (por exemplo, informações sobre commits, repositórios remotos, etc.). Se o diretório estiver corrompido, o git não tem conhecimento do histórico local e, portanto, o erro será relatado ao tentar empurrar ou puxar para / de um repositório remoto.
  • Você está tentando puxar de um repositório remoto que já tem commits enquanto você também criou um novo repositório localmente e adicionou commits também. Nesse caso, o erro será relatado, já que o Git não sabe como esses dois estão relacionados (eles são interpretados como dois projetos distintos).

Se for esse o caso, você precisará fornecer a bandeira --allow-unrelated-histories. Por exemplo,

$ git pull origin master --allow-unrelated-histories

Também existe uma chance de ocorrer esse erro ao tentar rebasee requer um tratamento diferente.

O processo de combinação de commits em um novo commit básico é chamado de rebase. Em outras palavras, rebasing simplesmente muda a base do branch para um commit diferente para que pareça como se você tivesse criado o branch daquele commit em particular. O diagrama abaixo ilustra com precisão como o rebase funciona no Git.

Fonte: Documentação Atlassian

Quando git rebase falha com este erro, o rebase não é abortado, mas ainda está em andamento. Em vez disso, você pode intervir manualmente.

$ git status
interactive rebase in progress; onto 4321beefdead
Last command done (1 command done):
   pick 1234deadbeef1234deadbeef test merge commit

Para resolver o problema, você precisa primeiro mergee e commit, para finalmente, forçar rebase para continuar:

xcrun: error: invalid active developer path

Este é um erro comum para usuários do OSX que é ainda mais frequente quando uma nova versão principal do OSX é feita. O erro é relatado quando você tenta executar qualquer comando git. Por exemplo,

O problema está relacionado à versão do Xcode Command Line Tools que precisa ser atualizada para que o erro seja resolvido. Para fazer isso, abra o terminal e execute:

$ xcode-select --install

A resposta deve ser

xcode-select: note: install requested for command line developer tools

enquanto uma janela pop-up aparecerá na tela solicitando a confirmação de que deseja instalar as ferramentas do desenvolvedor de linha de comando.

Basta clicar em instalar, aguardar a conclusão da instalação e abrir uma nova sessão de terminal. Os comandos Git agora devem funcionar conforme o esperado.

fatal: Unable to create ‘/path/to/.git/index.lock’: File exists.

Quando um processo git falha em um de seus repositórios Git, você pode ver o erro mostrado abaixo ao tentar executar um comando git:

fatal: Unable to create '/path/to/.git/index.lock': File exists.
Se nenhum outro processo git estiver em execução, isso provavelmente significa que um processo git travou neste repositório anteriormente.

Se nenhum outro processo git estiver em execução, você pode corrigir isso rapidamente removendo o arquivo manualmente:

$ rm -f .git/index.lock

error: pathspec did not match any file(s) known to git

Normalmente, quando você cria um novo branch usando, digamos, a IU da web do GitHub e volta ao seu terminal local para finalizar a compra no branch usando:

$ git checkout mybranch

você pode obter este erro

error: pathspec 'mybranch' did not match any file(s) known to git.

Isso geralmente significa que seu repositório local não está atualizado com as informações mais recentes do repositório Git remoto. Para corrigir o problema, você simplesmente precisa buscar as informações do branch recém-criado:

$ git fetch

Agora git checkout deve funcionar bem.

permission denied (publickey)

Para clonar repositórios remotos em sua máquina local, você precisa se certificar de que configurou corretamente a autenticação.

Se você tentar clonar um repo e a resposta for

$ git clone [email protected]/username:test.git
Initialized empty Git repository in `/path/to/test/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Agora, existem potencialmente algumas maneiras de resolver esse problema. A maneira mais fácil é provavelmente usar HTTPSpara clonar o repositório em sua máquina local que não requer validação de chave pública:

$ https://github.com/username/test.git

Alternativamente, se você ainda precisa usar SSH para clonar o repositório, você terá que gerar chaves SSH públicas e privadas para configurar a autenticação adequada. Para fazer isso, certifique-se de seguir as etapas abaixo.

  • Navegue até seu .sshdiretório local e execute ssh-keygenpara gerar chaves
$ cd ~/.ssh && ssh-keygen
  • Agora você precisa copiar o conteúdo do arquivo gerado id_rsa.pub
# Linux
$ cat id_rsa.pub | xclip# Windows
$ cat id_rsa.pub | clip
$ git config --global user.name "your-user-name"
$ git config --glocabl user.email [email protected]

E agora você deve conseguir clonar o repositório remoto usando SSH. Para obter mais detalhes, você pode consultar a documentação do GitHub e nunca mais passar perrengue com erros do Git ou pelo menos com esse especifico.

Conclusão

No artigo de hoje, exploramos alguns dos erros comuns do Git. Para cada um deles, discutimos os possíveis motivos que podem estar desencadeando esses erros e também como corrigi-los.

Git é definitivamente uma ferramenta muito poderosa e muito mais complicada do que às vezes pode parecer. A comunidade é ótima e a Internet está cheia de recursos para ajudá-lo a resolver qualquer problema que você possa ter com o Git.

Leia também: Python é eleito a linguagem de programação do ano

brayan

Brayan Monteiro

Bacharel em Sistemas de Informação pela Faculdade Maurício de Nassau e desenvolvedor PHP. Além de programador, produzo conteúdo e gerencio blogs. Sou especialista em desenvolvimento de software, SEO de sites e em negócios digitais.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

cinco × um =