git Fork或者git clone克隆别人的项目到自己的仓库如何保持原仓库同步

一、问题描述

有时候我们会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

### 如何克隆 GitHub 上的 forked 项目并将其推送到自己的仓库 要完成这一操作,需要执行以下几个方面的任务: #### 克隆 forked 项目的代码到本地 可以通过 `git clone` 命令来获取远程仓库的内容。假设已经 fork 了一个名为 `example-repo` 的项目,则可以运行以下命令将该项目克隆至本地环境[^2]: ```bash git clone https://github.com/your-username/example-repo.git cd example-repo ``` #### 添加仓库作为上游源 (upstream) 为了保持 forked 仓库仓库同步更新,在本地配置一个指向仓库的 URL 地址是非常重要的。这通过设置一个新的 remote 来实现,通常命名为 `upstream`[^1]: ```bash git remote add upstream https://github.com/original-owner/example-repo.git ``` 验证新添加的 remote 是否成功: ```bash git remote -v ``` 应该能看到如下输出(其中包含 origin 和 upstream): ``` origin https://github.com/your-username/example-repo.git (fetch) origin https://github.com/your-username/example-repo.git (push) upstream https://github.com/original-owner/example-repo.git (fetch) upstream https://github.com/original-owner/example-repo.git (push) ``` #### 同步 forked 仓库中的更改 当希望把来自仓库的新改动拉取下来并与自己 fork 出来的版本合并时,可按照下面流程操作[^4]。 首先从上游抓取最新数据: ```bash git fetch upstream ``` 接着切换到 master 或 main 分支,并进行合并: ```bash git checkout main git merge upstream/main ``` 如果当前分支没有任何独立提交记录,Git 可能会采用 fast-forward 方式自动前移指针位置[^5]。 #### 推送修改后的代码回个人仓库 最后一步就是把自己所做的任何变更推送回去给自己的 GitHub 存储库。确保处于正确的分支之上再执行推送指令: ```bash git push origin main ``` 以上过程涵盖了如何复制一份公共存储库为自己所用以及维护其持续更新的方法论介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值