将项目上传到github时如何解决“拒绝合并不相关的历史”?

Posted

技术标签:

【中文标题】将项目上传到github时如何解决“拒绝合并不相关的历史”?【英文标题】:How to fix "refusing to merge unrelated histories" when uploading project to github? 【发布时间】:2017-03-22 18:40:48 【问题描述】:

我已经在 windows 机器上安装了 Github 桌面和 git,我有一个 github 帐户并创建了一个虚拟存储库。

当我打算通过 git bash 命令行上传我的包时,它失败并出现错误: 致命:拒绝合并不相关的历史

我通过使用该社区的现有解决方案使用了多种方法来解决此问题,但仍然没有解决问题。有谁知道解决这个问题的任何技巧?如何将我的项目成功上传到 github?

【问题讨论】:

所有这些答案都假定您不想要初始 github 存储库中的任何内容,但 github 可以为您添加文件,例如默认的、格式良好的 .gitignore 和 README。我能找到解决这个问题的唯一方法是额外的git merge --allow-unrelated-histories。我希望有一种方法可以在单个 git pull 中做到这一点。 git pull origin master --allow-unrelated-histories 。见这里***.com/questions/37937984/… 【参考方案1】:

只是分享变基对我有用。我在 GitHub 上有一个新项目,我想在本地链接一个新的 repo,并不断收到fatal: refusing to merge unrelated histories。什么有效:

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,而本地的是 I初始c省略(小写)。我想我会把这个问题发给 Jack Handy...

【讨论】:

【参考方案2】:

尝试以下方法:

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 替换为您的repo 目录的路径(例如C:\Users\jvrat\Documents\MSPC),并将&lt;remote repo URL&gt; 替换为您的远程repo 的URL(例如https://github.com/username/repo_name.git)。

【讨论】:

还不能完成 rm -r .git 命令。另外, git add all 给了我一个错误。任何进一步的解决方案? 错误信息还有什么意思吗?你可以试试this solution 您的解决方案很有帮助,最后一条评论很有用。谢谢你:) 另外,如果发生任何新的提交,当我与 github 交互时,我在哪里可以找到有用的 git 命令?您可以推荐任何有用的 git 命令吗?感谢您的大力帮助:) 只要谷歌"git tutorial",你就会找到很多。 Github 也有its own interactive git tutorial。出于参考目的,最好使用official git docs。【参考方案3】:

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

git init

之后,您的目录是本地 git 存储库并包含一个 .git 目录。 然后,您基本上创建文件并将其添加到您的存储库中

git add <file-name>

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

git commit "Commit message"

这些都驻留在您本地的 git 存储库中。 要将本地存储库连接到远程存储库,您必须发出另一个命令:

git remote add origin <remote repo URL>

'origin' 和以下 URL 表示远程名称及其 URL。 您现在可以通过

将您的本地更改推送到您的原始存储库
git push <remote-name> <branch-name>

这是你的情况

git push origin master

因为现在你只有一个 master 分支。

您可以通过以下方式检查本地 repo 及其连接的远程 repo 的状态

git status

【讨论】:

先尝试“git pull”来合并远程仓库中的更改。 仍然无法解决。你能给我替代解决方案吗? 只需创建一个新文件夹,通过 CLI 导航到该文件夹​​,然后发出 'git clone ',然后发出 'git init'。您现在拥有与您的源同步的本地 git 存储库。

以上是关于将项目上传到github时如何解决“拒绝合并不相关的历史”?的主要内容,如果未能解决你的问题,请参考以下文章

如何上传本地项目到gitHub解决方案

为啥我不能将一个 MERN 堆栈项目完全上传到 Github? (在其他地方找不到解决方案)

如何将本地项目上传到gitHub

如何将项目上传到Github

如何将带有文件夹的项目上传到 GitHub [重复]

Git 拒绝合并不相关的历史。啥是“无关历史”?