git 本地仓库与远程仓库的强制合并

错误提示:
refusing to merge unrelated histories
The local repository is out of date

过程是这样的

今天在本地新建了一个 git 仓库,并往里添加了一些文件,也在本地提交了几次。

这时候再去 github 上新建了个仓库,然后把 github仓库添加到本地的仓库中。

git remote add rime git@github.com:KyleBing/rime-wubi86-jidan.git

可以看到已经添加了远程仓库:

clipboard.png

pull 远程仓库的内容:

clipboard.png

然后执行上传到 github 的时候出现下面错误:

clipboard.png

错误原因

其实本地建的那个仓库和远程 github 仓库是两个独立的仓库,互不相关。
如果在建完 github 后再 git clone 到本地就不会出现该问题了。

解决办法

git pull 有个 --allow-unrelated-histories 参数,是为了合并两个不相关的仓库的历史,这个可以通过 git pull --h 查看帮助。

因为我们这两个仓库并没有冲突,可以直接合并:

git pull rime master --allow-unrelated-histories

这时候出现填写合并信息的窗口

clipboard.png

填写保存后,结果显示,合并成功。

clipboard.png

后续提交

# 提交更新到 github
kyle-mbp:Rime Kyle$ git push rime master

# 结果
Counting objects: 38, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (38/38), done.
Writing objects: 100% (38/38), 1.85 MiB | 305.00 KiB/s, done.
Total 38 (delta 20), reused 0 (delta 0)
remote: Resolving deltas: 100% (20/20), done.
To github.com:KyleBing/rime-wubi86-jidan.git
   27c22af..bf39b8c  master -> master

查看历史记录是这样的,可以看到本地 master 和远程 master 已经合并在一起了:

clipboard.png

clipboard.png

再看一下远程仓库的提交记录,已经能看到本地的提交记录了。

结决


KyleBing
659 声望18 粉丝

前端,喜欢 Javascript scss,喜欢做一些实用的小工具