Gitee进行fork后的仓库,与原仓库同步
fork一个仓库后,如何快速地与根仓库同步
使用场景
1、fork 一份原仓库的项目到我们自己的仓库中,
2、在自己的仓库中切新的分支进行开发,开发完成之后,再推送到自己的仓库
3、在原仓库进行Pull Request,等待审核人审核代码通过后,我们的分支就被合并到原仓库中
而在这个过程中,原仓库的代码经常会变动,而 Gitee 不会帮我们自动同步原仓库的代码,我们不确保自己修改的代码是否是最新的。因此我们就面临这样的一个问题:“Gitee 进行 fork 后的仓库,如何与原仓库同步?”
解决方法
1、使用Gitee同步功能,
该功能会强制同步主仓库全部分支到Fork项目,会覆盖Fork项目代码,若Fork项目中存在没有推送到主仓库的代码,会被覆盖,并且不可撤销;
2、删掉自己名下 fork 的仓库,再 fork 一次
1)、第一步,进去自己的仓库,在仓库设置中删除仓库
2)、第二步,再次去 fork 一次原仓库
3、设置上游代码库
从主仓库拉取代码到本地,在本地合并主仓库代码与Fork项目代码,再push到远程Fork项目,完成主仓库 =>> Fork项目代码同步;
拉取 GitHub 仓库最新代码后,在 Merge 或 Pull 到本地
以下步骤在git窗口执行。打开git命令窗口
1)、第一步,查看当前的上游代码库
git remote -v # 查看当前的上游代码库
$ git remote -v
origin https://gitee.com/XXX/XXX.git (fetch)
origin https://gitee.com/XXX/XXX.git (push)
2)、第二步,再设置一个上游代码库,为 fork 的仓库地址
git remote add upstream URL #在设置一个新的上游代码库
$ git remote add upstream https://gitee.com/AAA/AAA.git .git
$ git remote -v
origin https://gitee.com/XXX/XXX.git (fetch)
origin https://gitee.com/XXX/XXX.git (push)
upstream https://gitee.com/AAA/AAA.git (fetch)
upstream https://gitee.com/AAA/AAA.git (push)
3)、第三步,拉取新设置的上游代码库
git fetch upstream # 拉取新设置的上游代码库
$ git fetch upstream
- 命令解析:
git fethc upstrem: 拉取主仓库代码到本地(上游代码库,非自己本地代码仓库)
3.1)、合并上游代码库和本地分支
git merge upstream/master
git merge upstream/master #根据自己设置分支进行选择设置
- 命令解析:
git merge upstream/master: 合并上游代码库的master分支到本地代码库master分支
4)、第四步,切换本地分支到 main 分支,拉取或合并远程分支到本地分支
- 此时本地的master分支就更新至upstream的master版本,然后利用push将本地分支覆盖到git远程分支上(注:不执行此步骤,则远程Fork项目和源仓库(主仓库)代码并没有同步):
$ git checkout main # 切换本地分支到main分支
$ git checkout main # 切换本地分支到main分支
# 使用Pull拉取分支
$ git pull --rebase upstream main # 将上游仓库的main分支通过rebase的形式拉取到本地main分支
# 或者使用Merge
$ git merge upstream main # 使用Merge会多一条merge commit,而pull --rebase不会有
$ git push origin main # 再将本地的分支推送到自己的远程仓库