情况介绍
我一开始在本地创建了仓库git init,有了一些提交。然后后面准备上传到github时,在github上创建了仓库,选了License,也就是说远程仓库也有了一个提交(即生成License的提交)。
在本地添加remote后,git push是不成功的,因为远程和本地不一致,也没有关联。所以据需要先pull,然后合并一下才能提交到远程仓库。
然后pull的时候报了个错,如下:
$ git pull origin main
From github.com:user/repo
* branch main -> FETCH_HEAD
fatal: refusing to merge unrelated histories
按照字面意思就是:拒绝合并没有关联的历史。
排查
我们看看文档
$ git pull --help
这个命令会在浏览器打开本地的git文档,,比如我的是:file:///H:/Git/mingw64/share/doc/git-doc/git-pull.html,搜一下:unrelated,找到了下面的内容:
--allow-unrelated-histories
By default, git merge command refuses to merge histories that do not share a common ancestor. This option can be used to override this safety when merging histories of two projects that started their lives independently. As that is a very rare occasion, no configuration variable to enable this by default exists and will not be added.
翻译过来是:
默认情况下,git
merge命令拒绝合并没有共同祖先的历史记录。此选项可用于在合并独立启动的两个项目的历史记录时覆盖此安全性。由于这种情况非常罕见,因此默认情况下不存在启用该功能的配置变量,也不会添加。
在这里,因为本地和远程内容都比较简单,且明确没有冲突,就是要合并的。那就添加这个参数,强制让它执行合并就行了。(注意:如果有冲突就要谨慎操作,同时以防万一,操作前先备份!!!)
$ git pull origin main --allow-unrelated-histories
From github.com:user/repo
* branch main -> FETCH_HEAD
Merge made by the 'recursive' strategy.
LICENSE | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 LICENSE
$ git logg
* b06c151 (HEAD -> main) Merge branch 'main' of github.com:user/repo
|\
| * 9e6ef31 (origin/main) Initial commit