O erro fatal: refusing to merge unrelated histories é lançado ao tentar fazer o merge automático de projetos que possuem históricos Git diferentes. Desde o Release 2.9.0 o Git não permite esta operação.
O erro fatal: refusing to merge unrelated histories
geralmente acontece quando você tenta fazer o git pull
de um repositório remoto, mas o seu repositório local possui um histórico de commits, branches, etc, diferente do que está no repositório remoto.
O que significa git unrelated histories
O erro de recusar mesclar históricos não relacionados ocorre quando um diretório .git
está ilegível ou quando você está tentando extrair dados de um repositório com seu próprio histórico de commits.
![fatal: refusing to merge unrelated histories fatal: refusing to merge unrelated histories](/pt-br/git/erros/erro-fatal-refusing-to-merge-unrelated-histories/fluxo-fatal-refusing-to-merge-unrelated-istories.jpeg)
Este erro informa que você está tentando mesclar com Git dois projetos não relacionados à mesma árvore de trabalho.
Um dos motivos pode ser o início de um repositório local e a adição posterior do remote que já contém algum arquivo, por exemplo um README.md
.
Outrra razão seria quando você cria um novo repositório, faz alguns commits e tenta puxar de outro repositório remoto. Este erro será exibido porque o repositório local com o qual você está trabalhando terá um histórico diferente do projeto que você está tentando recuperar.
Você ainda pode se deparar com esse erro se o diretório .git
dentro de um projeto foi excluído ou corrompido. Nesse caso, a linha de comando do Git pode não ser capaz de ler o histórico do seu projeto local.
Ao tentar enviar ou extrair dados de um repositório remoto, este erro ocorrerá. Isso ocorre porque o Git não sabe se o repositório remoto é compatível com o seu repositório atual.
Como resolver fatal: refusing to merge unrelated histories
Para resolver esse erro basta usar a opção allow-unrelated-histories
.
Para permitir que o Git faça o merge de dois projetos com históricos diferentes, passe o parâmetro --allow-unrelated-histories
ao fazer o pull, assim:
git pull origin master --allow-unrelated-histories
Ao executar a linha de comando acima você deve conseguir executar o comando git pull
ou git merge
de históricos diferentes sem problemas, como no exemplo a seguir:
git pull origin main --allow-unrelated-histories
# resultado
Username for 'https://gitlab.com': nunomazer
Password for 'https://[email protected]':
From https://gitlab.com/nunomazer/meu-projeto
* branch main -> FETCH_HEAD
Merge made by the 'recursive' strategy.
README.md | 3 +++
1 file changed, 3 insertions(+)
create mode 100644 README.md
Comentários