如何纠正“无法合并不相关的历史记录”?

How to correct «unable to merge unrelated histories»?

我在与其他几个人一起开发应用程序时使用 github 桌面 (https://desktop.github.com ),因此,由于某种原因,当尝试将两个分支合并为一个时,出现错误“无法合并目标分支之一显示不相关的历史记录。

可能是什么问题?

这个问题有几个原因。

但可能您的项目克隆与 GitHub(主项目)不同。

首先,保存您的项目(因为您可能不想再次编写所有代码)。

  1. 从 GitHub 桌面删除 repo(不是 GitHub!!!)
  2. 转到 GitHub
  3. 中的项目页面
  4. 单击 code用 GitHub Desktop 打开,然后再次 code .

首先:您也可以使用 search.

找到解决方案

错误消息的可能原因

发件人:https://komodor.com/learn/how-to-fix-fatal-refusing-to-merge-unrelated-histories-error

Here are some common scenarios where fatal: refusing to merge unrelated histories can occur.

  1. You have a new Git repository with some commits. You then try to pull from an existing remote repo. The merge becomes incompatible because the histories for branch and remote pull are different. Git sees the situation as you trying to merge two completely unrelated branches, and it doesn’t know what to do.
  2. There’s something wrong with the .git directory. It may have been accidentally deleted at some point or got corrupted. This can happen if you’ve cloned or cleaned a project. Here the error occurs because Git doesn’t have the necessary information about your local project’s history.
  3. The branches are at different HEAD positions when you try to push or pull data from a remote repo and cannot be matched due to a lack of commonality.

解决问题的选项

本文描述了关于如何 resolve/avoid 此类问题的两个选项,但针对的是命令行/终端用户。我想无论如何我更喜欢选项 2 而不是选项 1,也在终端中使用 git。

文章是这样解释的:

The alternative (and longer) way of fixing refusing to merge unrelated histories issues is to unstage your current commits, stash them, clone your required remote repository, and then place your stashed branch contents into the new clone. This will ensure that any conflicts that you may encounter in the code are addressed before merging and prevent application errors from occurring.

它(应该)在 GitHub 桌面中如何工作

在 GitHub 桌面版中,您应该可以使用选项 2 的修改版本:

  1. 要取消上次提交中的所有文件,请双击暂存文件。这会将它们移动到未暂存区域。在此 GitHub issue.
  2. 中了解更多信息
  3. 要存储未保存的文件,right-click 一个未暂存的文件。详细了解 stashing files

这将为您提供一个干净的工作树,以将您的远程存储库拉入其中。成功进入分支后,您可以:

  • 取消隐藏您的文件(再次参见上面的 link)以将它们重新应用到您当前的工作副本。
  • 将它们作为单独的提交提交。
  • 解决您可能遇到的任何文件冲突。

我希望这个解释能增加一些清晰度。如果我的文字中有任何错误或误导性信息,请告诉我。