从github上fork了一个仓库后保持与原仓库代码同步的操作方法

有这么个需求:在github上fork了一个项目,然后对这个项目进行改造,实现自己的功能,但是原有的项目也有很多开发者在开发新功能或者解决bug等等,那么我们当然希望fork出来的项目能与原项目保持代码同步,这样就不必重复浪费时间精力去添加原项目新增的功能或者解决原项目已经解决的bug了,问题是如何使得fork出来的项目保持和原项目代码同步呢,

总体思路就是:为本地仓库添加两个远程仓库,从原仓库更新代码到本地,再把更新后的本地分支push到自己的远程项目仓库。
比如fork出来的项目命名为EvidenceProof,原项目是bitcoin,则具体操作步骤为:
1.点击github上原项目仓库页面的fork按钮,从原项目仓库fork到自己的仓库,并重命名为EvidenceProof
2.将自己的远程仓库clone到本地

git clone https://github.com/osbc/EvidenceProof.git

这时可以执行git remote -v命令查看本地仓库对应的远程仓库:

y@ubuntu:~/blockchain/EvidenceProof$ git remote -v
origin  https://github.com/osbc/EvidenceProof.git (fetch)
origin  https://github.com/osbc/EvidenceProof.git (push)

可以看到有只有一个远程仓库。

3.为本地仓库添加一个新的远程仓库,指定名字为upstream,指向原项目仓库,(可参考:.5 Git 基础 - 远程仓库的使用)

git remote add upstream https://github.com/bitcoin/bitcoin.git

这时可以再次执行git remote -v命令查看此时本地仓库对应的远程仓库:

y@ubuntu:~/blockchain/EvidenceProof$ git remote -v
origin  https://github.com/osbc/EvidenceProof.git (fetch)
origin  https://github.com/osbc/EvidenceProof.git (push)
upstream    https://github.com/bitcoin/bitcoin.git (fetch)
upstream    https://github.com/bitcoin/bitcoin.git (push)

可以看到有两个远程仓库了。

4.过了一段时间之后,你可能发现原项目bitcoin的源码修改了很多,你希望自己的仓库也保持同步更新,则执行

git pull upstream master          //从原仓库更新代码到的本地master分支
git push origin master            //将master推到自己的远程仓库

注意上述的git pull upstream master命令也可以分成2步来执行(若要合并master分支,则当前要处于master分支,若不处于,则先执行git checkout master切换到master分支):
git fetch upstream
git merge upstream/master

参考:
在Github和Git上fork之简单指南
github仓库与原始仓库同步的两种方法
github上fork一个分支,如何和主分支同步
github如何实现fork的项目与原项目同步

你可能感兴趣的:(Git)