Refusing to Merge Unrelated Histories - How to Resolve Git Issues
Ошибка "refusing to merge unrelated histories" возникает при попытке объединения двух разных веток истории гита.
Эта ошибка обычно возникает в следующих случаях:
1. Создание нового репозитория на гитхабе или другом сервисе под учетной записью, которая была создана с использованием команды git init. В этом случае гит не знает о существовании репозитория в отдельном сервисе, и пытается объединить две независимые истории, что вызывает ошибку.
2. Некоторые команды git, такие как git pull и git merge, требуют явного указания -allow-unrelated-histories, чтобы позволить объединение двух разных веток истории.
Примеры кода:
1. Создание нового репозитория с помощью git init и попытка объединить две независимые ветки истории:
$ git init myRepo
$ cd myRepo
$ echo "Hello World" > file.txt
$ git add file.txt
$ git commit -m "Initial commit"
$ git remote add origin https://github.com/myUserName/myRepo.git
$ git push -u origin master
$ git checkout -b newBranch
$ echo "New Branch" >> file.txt
$ git add file.txt
$ git commit -m "Added new branch"
$ git push --set-upstream origin newBranch
$ git checkout master
$ git merge newBranch
error: refusing to merge unrelated histories
2. Использование команд git pull и git merge с разрешением объединения независимых веток истории:
$ git clone https://github.com/myUserName/myRepo.git
$ cd myRepo
$ git checkout -b newBranch
$ echo "New Branch" >> file.txt
$ git add file.txt
$ git commit -m "Added new branch"
$ git push --set-upstream origin newBranch
$ git checkout master
$ git pull origin master
$ git merge newBranch --allow-unrelated-histories
В обоих примерах мы попытались объединить две независимые ветки истории, что вызвало ошибку, но второй пример позволил нам объединить эти истории с помощью ключа --allow-unrelated-histories.