在开源项目或工作项目中使用 git 建立 fork 仓库


前言:
在项目开发中我们会遇到 fork 了上游的仓库,但是我们需要更新最新的代码或者把自己修改的代码向上游合并。
有人会说更新最新的上游代码,最简单办法就是删掉现在的 fork 仓库,重新去 fork,但是很多时候我们还要把我们修改的代码进行合并的主分支去。这个时候我们的首选就是今天本文介绍的方法了。
给大家分享一下自己的实操。
作者:良知犹存
转载授权以及围观:欢迎关注微信公众号:羽林君
或者添加作者个人微信:become_me
步骤须知:
在第一步我们要知道,fork 仓库之后,我们做了自己的修改之后再次合并到主分支的流程。大致如下。
派生一个项目
从 master 分支创建一个新分支
提交一些修改来改进项目
将这个分支推送到 GitHub 上
创建一个拉取请求
讨论,根据实际情况继续修改
项目的拥有者合并或关闭你的拉取请求
将更新后的 master 分支同步到你的派生中
上手操作:
先 fork 一个仓库,这样你就有可以自己修改的一个下游仓库了。


你可以在你的下游仓库里面做你想要的增改删。但是这个时候就会出现一个问题,如何把你修改的部分合并到主分支给大家一起用呢。
下面就是本文主要描述的部分:
增加一个上游仓库地址
首先我们先去查看自己的现有的远程仓库地址,使用命令如下:



这个时候我们看到上面只有 2 行,说明你未设置 upstream (中文叫:上游代码库)。所以我们需要设置上游仓库,一般情况下,设置好一次 upstream 后就无需重复设置。
使用命令增加你的的上游仓库地址,使用命令如下:

git remote add 命令我们应该比较熟悉,就是做远程仓库连接配置的。


配置完成之后,我们用 git remote -v 命令再次查询,这个时候就看到了配置好的 upstream 地址。这个时候我们就可以随意拉去上游仓库的代码了。用如下命令:



上下游代码进行合并
现在代码我们可以随意修改了,但是一般来说我们修改代码时候,上游仓库也会有很多和我们不同步的修改,这个时候我们想要把我们代码像上游代码合并的第一件事,就是先把上游仓库新修改的部分代码进行合并到我们修改好的代码中来。
这个时候就是我们平常操作的部分了,fetch 下来之后进行 merge



在这里插入图片描述
在合并之后我们看到其中有些部分可以自动合并,有些会产生 conflict,我们需要手工进行修改,这个部分就是我们 git 里面的基本操作了哈。合并冲突代码这个部分现在主流的代码编辑器都可以人性化的提示,如果需要看的话,大家也可以看我之前的 git 文章合集哈。
执行命令 git push 把本地仓库向 github 仓库(你 fork 到自己名下的仓库)推送修改。现在你已经解决了 fork 的仓库和原仓库版本不一致的问题。可以放心向上游 发起 pull request 了。
这个时候如果你有对上游仓库的修改权限你可以用 git checkout 切换到上游的分支,直接把代码进行推送。
但是一般我们是没有权限的,这个时候我们就需要进行一次合并请求。
例如我在 github 上 fork 了瑞芯微的一个仓库。


当我做了一些修改之后,我就可以在上游仓库的界面中选择 pull request,再点击新建一个合并请求。如下所示:


然后在界面里填写自己的标题和合并的一些原因。


等待管理员确认合并之后代码就合并到上游仓库,大家就可以用到你修改的代码了。
结语
这就是我分享的项目合作中 git 工具的一些操作,如果大家有更好的想法和需求,也欢迎大家加我好友交流分享哈。
作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。

推荐阅读
【3】CPU中的程序是怎么运行起来的 必读
本公众号全部原创干货已整理成一个目录,回复[ 资源 ]即可获得。
评论