1、场景描述:
当我们本地初始化了git项目,并且写了代码,远程仓库也初始化了,此时如果本地git add/commit
后,添加远程仓库地址,再push的话,是完全没有问题的,但是要是你本地commit了,远程仓库突然初始化了README文件(常见在gitee上),此时就会造成本地/远程仓库不一致,你push代码就会出现refusing to merge unrelated histories的错误提示
2、解决方法:
1、你要是已经add或者commit了,就先git reset --soft HEAD^,先将代码撤回到工作区,然后stash存储到缓存去,再git pull,先将远程代码拉取下来,再将你代码push上去,这也是我觉得更合理的方式(建议)
2、在你git pull 后面 加上 --allow-unrelated-histories进行允许合并,相当于强行将远程代码先拉取下来当然这也不会有啥问题(建议)
3、先删除你git的远程地址 git remote rm origin,然后再添加,但是我不建议这么做,如果可以的话,我建议使用前两种方式(不建议)
3、综合
一般情况下,不管是多人协同还是单人开发,都应该先git pull拉取远程代码下来,再将你本地代码提上去,要是远程有代码,且有冲突的话,你就将你本地代码git stash,拉取下来后,再git stash pop解决冲突,再git push。如果你不太了解 git stash操作的话,可以参考我上一篇博客