文章目录
git-github fork 后获取原始仓库新分支
相关基础:关于Git upstream和Git origin
当你从GitHub上 clone 一个 repo 到本地时,除非你已明确声明是这个repo的contributor,否则你是不能向其pull request的,此时,该远程的repo对于本地repo来说,就是upstream。
当你从GitHub上 fork 一个 repo 之后,再 clone forked repo 到本地,你就可以任意向其pull request,此时,远程的 repo 就是 origin。
- 如果是 upstream repo,你只可以拉取最新代码(即 git fetch ),从而保证你本地的仓库与源仓库同步
- 如果是 origin repo,就是你自己的repo(自己创建的,或者 fork 的项目)你可以做 任何推拉操作(pull and push)
- 你可以通过 pull request 向 upstream repo 贡献代码
问题描述
项目维护者初始化正式仓库。和任何使用Git项目一样,第一步是创建在服务器上一个正式仓库,让所有团队成员都可以访问到。 通常这个仓库也会作为项目维护者的公开仓库。
其它所有的开发需要fork正式仓库。 然后,开发者克隆自己fork出来的仓库。
由于正式代码库往前走了,开发的主分支需要和正式仓库做同步。我们使用github 界面的更新,发现只能更新已有分支的代码。但是如果原仓库新加的分支,githup并没有同步过来。
可以抽象描述如下:
在项目的仓库中,有一个项目A,我将它fork到我自己的仓库中作为项目B,
此时,项目B与项目A的分支是相同的。后来,在项目A里,新建了一个分支后,我要怎么把这个分支同步到项目B中呢?
解决方案:fork项目里同步他人新增分支的方法
思路1:删除自己的私仓,重新从主仓fork
思路2:fork项目里同步他人新增分支的方法
把别人的项目fork到自己的仓库,再clone到本地。然后这之后别人新增了分支,我们如何做呢?这里我们假设原仓库新增了testnet分支:
新的上游分支拉入本地仓库, git remote add upstream 添加正式仓库地址
git remote -v
git remote add upstream https://github.com/aptos-labs/aptos-core.git
git remote -v
检索新的上游分支,
git fetch upstream
在本地创建一个叫的testnet新分支,并切换过去
从源仓库将testnet分支的内容,pull到你新建的本地testnet分支上
git checkout -b testnet upstream/testnet
将本地的dev分支 推送到你fork出来的远程仓库
git push origin testnet
此时,你的远程分支也就有了这个新的testnet分支,也就做到了你fork出来的仓库和源仓库分支的同步