Git отказ от объединения несвязанных историй. Что такое "несвязанные истории"?

В моем локальном я создал новый текстовый файл → git добавить newfile.txt → commit → pull origin master → ERROR!

"отказ от объединения несвязанных историй".

Что такое несвязанные истории?, что связано с историями?

Ответ 1

Я думаю, что вы сделали фиксацию в удаленном репозитории, и когда вы делаете эту ошибку, выполните.

используйте эту команду

git pull origin master --allow-unrelated-histories
git merge origin origin/master

Ответ 2

Когда каким-то образом локальный подкаталог .git теряется, кажется, что весь проект появился из ниоткуда, поскольку все локальные истории изменений содержались в .git. Таким образом, ваши локальные изменения становятся несвязанными. Вот почему все изменения называются unrelated histories.

В этой ситуации запрос git merge or pull не сможет отследить, где вы внесли изменения для добавления в удаленный проект. Следовательно, " refusing to merge unrelated histories" - ошибка возникает.

В этой ситуации, если вы попытаетесь принудительно объединить

git pull origin master --allow-unrelated-histories

git merge origin origin/master - эти команды создадут множество конфликтов, так как не смогут найти вашу локальную историю изменений.

Ответ 3

Я получил эту проблему, когда переименовал один из репозиториев в GitHub Enterprise, а затем сделал то же самое прежнее именованное хранилище, как описано ниже.

  1. создать репо sample в удаленном режиме
  2. клонировать его на локальный
  3. переименовать пульт в old-sample
  4. создать новый репозиторий с именем sample в удаленном режиме
  5. попробуйте выдвинуть его из локального
  6. произошла ошибка.

Странно то, что я удалил локальное репо, но git пытается клонировать старое, даже если я пытаюсь клонировать по вновь созданному URL репо. URL-адрес клона просто автоматически перенаправляется на старый, даже если новый существует в удаленном. Я не знаю, что это происходит из-за сервера или локального процесса git.

По этой причине ошибка возникает из-за того, что процесс git не может сравнить свою локальную историю фиксации с удаленной историей.

несвязанные истории могут рассказать о ситуации выше.

Я закончил, чтобы удалить переименованный старый репо в удаленном, и это решило.