瑞当

瑞当科技
创新引领未来

fork别人的项目保持与源项目同步更新的两种方式

一、需求场景

我们经常使用别人的一些开源项目,并在此基础上进行自己的进一步开发。常用的就是fork别人的代码到本地,然后继续开发后再提交到自己的git仓库中。这样就会产生一个问题,就是别人的代码更新后,我们无法同步更新被人的代码。本文主要用两种方式来保证自己本地的代码和别人的代码同步。

二、解决方案

1. 使用git的upstream方式

此处我们以在Github上开源的microsoft/terminal 这个项目为例进行实操

> 1. 打开该项目在Github上的地址

microsoft/terminal

> 2. 登录自己的Github账号

> 3. 点击fork, fork该项目到个人的仓库中



> 4. fork成功后跳转到个人仓库中,可以看到如图红色标注所示,表明该项目是自己fork而来


> 5. 克隆该项目到本地pc,然后打开该项目


> 6. 此处为了方便大家参考,接下来的操作我们直接使用git命令

使用git 命令查看当前的remote信息

git remote -v


> 7. 关键的操作来了,接下来我们添加源码的原仓库,作为我们本git仓库的上游,

git remote add upstream https://github.com/microsoft/terminal.git

> 8. 添加完成后再次查看remote 信息,会显示如下:


> 9. 获取源仓库的最新代码


> 10. 例如源代码的master分支有更新,我们要合并到我们本地的代码分支上只需要执行如下操作

git merge upstream/master

> 11. 执行完成后,就会发现本地代码已经更新到最新,如果有冲突需要我们解决冲突,解决完成后,执行

git push origin

> 12. 每次源代码有更新都只需要重复第7--11步即可。


2. 使用git的分支方式来解决

> 1. 前面的步骤都参考第一种方式1-6步

> 2. 我们添加远程分支的模式来进行代码的合并,

git remote add microsoft https://github.com/microsoft/terminal.git 


> 3. 上述操作中的分支别名mircosoft可以随便去,易于辨识即可

> 4. fetch分支代码,并进行合并

git fetch microsoft

git merge microsoft/master


> 5. 执行完成后,就会发现本地代码已经更新到最新,如果有冲突需要我们解决冲突,解决完成后,执行

git push origin

每次源代码有更新都只需要重复第4步即可。

三、总结

git 毕竟出自大师之手,我们开发过程中遇到的常见场景和痛点,他基本都考虑到了,有啥问题仔细阅读官方文档,绝对有意想不到的惊喜。既然选择了Git这个神器,就要用“偷懒”的思维去思考开发和团队协作过程中遇到的问题。寻求最高效,可靠的解决方案。