使用过github的小伙伴都知道fork的功能,但是fork是一个一次性的事情,相当于做了一个快照,如果fork后原项目有更新的话,我们fork后的项目是不会同步更新的,想要保持同步可以按下面的步骤操作
1.首先需要将fork的项目克隆到本地(假设你1分钟前刚刚进行fork)
代码语言:javascript复制$ git clone <fork后的项目地址>
2.接着,设置origin和upstream,这里以seatunnel项目作为示例
代码语言:javascript复制$ git remote add origin git@github.com:{your_github_id}/incubator-seatunnel.git
$ git remote add upstream git@github.com:apache/incubator-seatunnel.git
$ git remote -v
origin git@github.com:{your_github_id}/incubator-seatunnel.git (fetch)
origin git@github.com:{your_github_id}/incubator-seatunnel.git (push)
upstream git@github.com:apache/incubator-seatunnel.git (fetch)
upstream git@github.com:apache/incubator-seatunnel.git (push)
这样设置就完成了。
3.一个月(也可以是一个星期)后,apache/incubator-seatunnel的代码更新了很多pr,但是我fork的项目还是之前fork的时候的样子,我们想将fork的项目和apache/incubator-seatunnel保持一致,比如我想贡献个pr,总不能每次都删掉重新fork吧。
下面的操作可以轻松实现同步(假设我们想同步的是dev分支)
代码语言:javascript复制$ git fetch upstream
$ git rebase upstream/dev
$ git push origin dev
通过以上操作,就可以将自己的fork分支与原项目同步更新(本地的fork分支)。如果在合并代码的过程中出现冲突,需要手动解决冲突,并提交修改。
最后,将同步更新后的代码推送到自己的远程分支,即可完成代码更新。
代码语言:javascript复制$ git push origin dev
一个月后,apache/incubator-seatunnel又更新了,重复上面123,就可以继续同步。