一、问题描述
有时候我们会clone别人的项目到自己的仓库来进行二次开发,开发好之后提交到自己的仓库,如有原仓库有更新了,可以选择性的进行同步
二、解决方法
这里以ruoyi-vue-pro得前端项目来进行演示,创建一个目录,在目录下随便创建一个文件
然后在gitee上创建自己的仓库,然后在该目录下依次执行如下命令:
git init
git add .
git commit -m "first commit"
git remote add origin https://gitee.com/xxxx/xxxx
git push -u origin "master"
此时执行完成,就会将项目提交到自己的仓库中去了,然后可以执行命令查看远程仓库地址:
git remote -v
此时就一个仓库
添加别人的代码仓库为你的远程仓库
git remote add upstream https://gitee.com/yudaocode/yudao-ui-admin-vue3.git
再次查看
git remote -v
就会多出一个仓库地址
从远程仓库获取最新的更新
git fetch upstream
切换到自己的分支
git checkout master
将别人的更新合并到你的当前分支
git merge upstream/master
此时有可能会报错:
fatal: refusing to merge unrelated histories
造成 fatal: refusing to merge unrelated histories错误的原因有以下几点:
1.有一个包含一些提交的新 Git 存储库,然后,您尝试从现有的远程仓库中提取,合并变得不兼容,因为分支和远程拉取的历史不同,当你试图合并两个完全不相关的分支时,Git 看到了这种情况,它不知道该怎么做。
2.目录有问题.git,它可能在某些时候被意外删除或损坏,如果您克隆或清理了项目,则可能会发生这种情况,此处发生错误是因为 Git 没有有关本地项目历史的必要信息。
3.当您尝试从远程仓库推送或拉取数据时,分支位于不同的HEAD位置,并且由于缺乏共性而无法匹配。
使用--allow-unrelated-histories标志允许合并不相关的历史,这是一种解决问题的快速方法,但请谨慎使用,因为它将两个不同的历史合并到一个新的共同历史中,由于我们是首次,所以无所谓
git merge upstream/master --allow-unrelated-histories
请注意,这可能会导致冲突,我们需要解决这些冲突后再次提交。
提交
git push origin master