当上传一个项目到GitHub时,如何解决"refusing to merge unrelated histories"的问题?

10

我已在Windows机器上安装了GitHub Desktop和Git。我有一个GitHub账户并创建了一个虚拟仓库。

当我尝试通过Git Bash命令行上传我的包时,它会失败并出现错误:

fatal: refusing to merge unrelated histories

我尝试使用社区中的现有解决方案来克服这些问题,但仍然没有解决问题。是否有解决此问题的技巧?如何成功地将我的项目上传到GitHub?


3
所有这些答案都假设您不想从初始的 GitHub 仓库中获取任何东西,但是 GitHub 可以为您添加文件,例如一个默认的、格式良好的 .gitignore 和 README。我所能找到的唯一解决方法是使用额外的 git merge --allow-unrelated-histories。我希望有一种方式可以在单个的 git pull 中完成此操作。 - trysis
3
git pull origin master --allow-unrelated-histories的意思是从远程仓库(origin)拉取最新的(master分支)代码,并且允许合并不相关的历史记录(--allow-unrelated-histories)。详情请参考此处 https://dev59.com/ploU5IYBdhLWcg3wAjYs - Bhargav Variya
2
这个回答解决了你的问题吗?Git拒绝在rebase时合并不相关的历史记录 - Michael Freidgeim
3个回答

17

我只是想分享一下,变基对我很有效。我在 GitHub 上有一个新项目,本地也有一个新的存储库,我想将它们链接起来,但一直收到“致命错误:拒绝合并不相关的历史记录”的提示。解决方法:

git remote add origin http://github.com/MyName/MyProjectName -f
git branch -u origin/master
git pull -r     # R for rebase, makes the magic happen

输出:

First, rewinding head to replay your work on top of it...
Applying: Initial Commit

git log 输出 (第一个是 GitHub 存储库,第二个是本地):

c7f843e Initial Commit (AmitaiB, 4 minutes ago)
97100be Initial commit (Amitai Blickstein, 9 minutes ago)

PS: 很有趣,我从来没有注意到GitHub的默认初始提交信息是Initial Commit,而本地的则是Initial commit(小写)。 我想我会把这个问题发送给Jack Handey...


1
杰克·汉迪是谁?你是指 杰克·汉迪 吗? - Peter Mortensen

5

请尝试以下方法:

cd /path/to/my/repo
git init
git add --all
git commit -m "Initial commit"
git remote add origin <remote repo URL>
git push -u origin master

请务必将/path/to/my/repo替换为您的存储库目录的路径(例如C:\Users\jvrat\Documents\MSPC),并将<remote repository URL>替换为您的远程存储库的URL(例如https://github.com/username/repo_name.git)。


无法完成 rm -r .git 命令。而且,git add all 给了我一个错误。还有其他解决方案吗? - Hamilton
错误信息有更详细的说明吗?您可以尝试这个解决方案 - TeWu
你的解决方案非常有帮助,最后一条评论很有用。谢谢 :) - Hamilton
另外,当我与 GitHub 交互时,如果有任何新的提交,我在哪里可以找到有用的 git 命令?您能推荐一些有用的 git 命令吗?非常感谢您的帮助 :) - Hamilton
只需在谷歌上搜索“git教程”,你就会找到很多。Github也有自己的交互式git教程。为了参考,最好使用官方的git文档。 - TeWu

1

第一步是在本地项目目录中初始化Git:

git init

接下来,您的目录是一个本地 Git 存储库,并包含一个 .git 目录。

然后,您可以通过基本操作创建文件并将其添加到存储库中:

git add <file-name>

您添加到存储库中的文件现在已被跟踪。如果您想提交对这些文件所做的所有更改,只需

git commit "Commit message"

这些都位于您的本地Git存储库中。

要将您的本地存储库连接到远程存储库,您需要发出另一个命令:

git remote add origin <remote repo URL>

'origin'和以下URL代表远程名称及其URL。通过以下方式,您现在可以将本地更改推送到origin存储库:

git push <remote-name> <branch-name>

在您的情况下是这样的。
git push origin master

因为目前你只有主分支

你可以通过以下方式检查本地仓库及其连接的远程仓库的状态:

git status

首先尝试使用“git pull”命令从远程仓库合并更改。 - Torsten Barthel
1
仍然无法解决。你能给我提供另一种解决方案吗? - Hamilton
只需创建一个新文件夹,通过CLI导航到它并发出“git clone <repo-URL>”命令,然后只需发出“git init”命令。现在您拥有与原始版本同步的本地git存储库。 - Torsten Barthel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接