将项目上传到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
),并将<remote repo URL>
替换为您的远程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以上是关于将项目上传到github时如何解决“拒绝合并不相关的历史”?的主要内容,如果未能解决你的问题,请参考以下文章