java 进程同步代码_GitHub上fork原项目,保持和原作者同步的代码更新

本文介绍了在GitHub上fork项目后,如何通过创建pull request或使用命令行fetch方法,来同步原作者项目的最新代码更新。详细步骤包括在GitHub网页端创建pull request合并,以及在本地通过git命令行fetch并merge上游分支。
摘要由CSDN通过智能技术生成

一、场景

在GitHub上我们会去fork别人的一个项目,这就在自己的Github上生成了一个与原作者项目互不影响的副本,自己可以将自己Github上的这个项目再clone到本地进行修改,修改后再push,只有自己Github上的项目会发生改变,而原作者项目并不会受影响,避免了原作者项目被污染。但经过一段时间,有可能作者原来的代码变化很大,你想接着在他最新的代码上修改,这时你需要合并原作者的最新代码过来,让你的项目变成最新的。

二、解决方法

这里我演示使用两种方式来更新最新代码。

方式一:从github上进行操作然后更新

登录自己的github账号,在fork的项目内点击 “New pull request”:

bc7fdfc03a181785f939cc7c3cabcadc.gif

将 base fork 改成自己github上fork后的项目,head fork 改成原项目,如果base fork选择了自己fork完的项目后变成两个都是master,可以点一下“compare across forks”

bc7fdfc03a181785f939cc7c3cabcadc.gif

点击“Create pull request”进入页面,填写信息后提交

bc7fdfc03a181785f939cc7c3cabcadc.gif

点击“Merge pull request”合入代码

bc7fdfc03a181785f939cc7c3cabcadc.gif

这时候回到自己github账号下fork的项目code下看commits可以看到原项目新提交的内容都已经合过来了

bc7fdfc03a181785f939cc7c3cabcadc.gif

这时候在本地执行"git pull"就可以更新到最新的代码了

方法二、通过命令行fetch拉取原仓库更新

1、拉取最新代码到本地电脑git clone git@github.com:X-rapido/douban-api-proxy.git

bc7fdfc03a181785f939cc7c3cabcadc.gif

2、配置当前fork的仓库的原仓库地址git remote add upstream 

3、查看当前仓库的远程仓库地址和原仓库地址git remote -v

4、获取原仓库的更新。使用fetch更新,fetch后会被存储在一个本地分支upstream/master上。upstream是创建的分支名,随意git fetch upstream

5、合并到本地分支。切换到本地master分支,合并upstream/master分支。git merge upstream/master

6、这时候使用git log就能看到原仓库的更新了。git log

7、如果需要自己github上的fork的仓库需要保持同步更新,执行git push进行推送git push origin master

操作日志如下➜  git clone git@github.com:X-rapido/douban-api-proxy.git

Cloning into 'douban-api-proxy'...

...

➜  cd douban-api-proxy

➜  douban-api-proxy git:(master) git remote -v

origin  git@github.com:X-rapido/douban-api-proxy.git (fetch)

origin  git@github.com:X-rapido/douban-api-proxy.git (push)

➜  douban-api-proxy git:(master) git remote add upstream https://github.com/zce/douban-api-proxy.git

➜  douban-api-proxy git:(master) git remote -v

origin  git@github.com:X-rapido/douban-api-proxy.git (fetch)

origin  git@github.com:X-rapido/douban-api-proxy.git (push)

upstream    https://github.com/zce/douban-api-proxy.git (fetch)

upstream    https://github.com/zce/douban-api-proxy.git (push)

➜  douban-api-proxy git:(master) git fetch upstream

remote: Enumerating objects: 12, done.

remote: Counting objects: 100% (12/12), done.

remote: Compressing objects: 100% (10/10), done.

remote: Total 13 (delta 5), reused 2 (delta 2), pack-reused 1

Unpacking objects: 100% (13/13), done.

From https://github.com/zce/douban-api-proxy

* [new branch]      master     -> upstream/master

➜  douban-api-proxy git:(master) git merge upstream/master

...

➜  douban-api-proxy git:(master) git log

...

➜  douban-api-proxy git:(master) git push origin master

...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值