GitHub协作开发项目


注:转载请标明原文出处链接:https://xiongyiming.blog.csdn.net/article/details/106056200


以前用GitHub只知道搜索代码然后下载看是否使用,也不知道GitHub其他的功能。最近了解了GitHub相关功能,觉得GitHub太厉害了,微软75亿美元收购GitHub真的太值了。


Github可以协作开发项目,官方文档给出了操作流程: Understanding the GitHub flow

下面将简单介绍文件内容,然后通过两个例子来模拟Github协作开发项目,方便后期复习查阅。


在这里插入图片描述




1 了解GitHub flow

1.1 创建分支(Create a branch)

在这里插入图片描述


当你在进行项目开发时,在任何给定的时间都会有许多不同的想法,其中一些可能已经完成,而另一些则没有完成。分支可帮助你管理你的项目。
当你在项目中创建分支时,你正在创建一个可以尝试新想法的环境。你在分支上所做的操作不会影响主分支内容,因此你可以自由地进行试验和提交更改,审核后进行合并为止。

ProTip
分支是Git中的核心概念,整个GitHub流程都以此为基础。只有一条规则:master分支中的任何内容始终都是可部署的。
因此,在处理功能或修订时,要在主分支之外创建新分支非常重要。 你创建的分支名称应具有描述性(例如,refactor-authentication, user-content-cache-key, make-retina-avatars),这样方面其他人可以看到正在处理的内容。



1.2 添加提交 (Add commits)

在这里插入图片描述


创建分支后,就可以开始进行更改了。无论何时添加,编辑或删除文件,都在进行提交,并将其添加到分支中。添加提交的过程可以跟踪您在功能分支上工作的进度。
提交还会保留历史记录,其他人可以遵循该历史记录来了解您的工作以及原因。每个提交都有一个关联的提交消息,该消息是说明为什么进行特定更改的说明。此外,每次提交都被视为一个单独的更改单元。如果发现错误,则可以反复进行更改。

ProTip
提交消息非常重要,尤其是因为Git会跟踪您的更改,然后将它们显示为提交后将其显示在服务器上。 通过编写清晰的提交消息,您可以使其他人更容易跟进并提供反馈。



1.3 提出请求 (Open a Pull Request)

在这里插入图片描述


自己在分支上提交代码后,觉得还不错可以发送请求,送给对方审核,对方审核通过则可以进行合并。



1.4 讨论和审核你的代码 (Discuss and review your code)

在这里插入图片描述


管理者打开“提出请求”后,将会对你的代码进行审核,如果有问题可以回复对方修改,直到满意为止。

ProTip
提出请求是用Markdown编辑器进行编辑的,编辑的内容不局限于文本,可以是图片,代码等内容。



1.5 部署 (Deploy)

在这里插入图片描述


使用GitHub,你可以从分支进行部署,即正式合并之前进行最终测试。
如果管理者觉得可以就进行合并。



1.6 合并(Merge)

在这里插入图片描述


现在您的更改已在生产环境中得到验证,可以将代码进行合并带master分支中。
合并后,提出请求会保留代码历史更改的记录。 因为它们是可搜索的,所以它们使任何人都可以及时返回以了解做出决定的原因和方式。


下面针对上面的原理通过简单的例子进行实践。
分为两种情况:
第一种是团队之间互相认识,共同开发项目。这样可以建立私人项目,然后邀请项目成员共同开发,这样其他人将看不到团队的项目。

第二种是开源的项目,全网都可以看到,大家都可以对你的项目提出建议和修改,达到共同开发的目的。




2 团队协作开发

例如:团队成员有:luohuayouyi66 和 xiongyiming 等人。项目需要团队成员共同开发,项目负责人为luohuayouyi66。那么luohuayouyi66需要在GitHub上新建仓库然后邀请团队成员开发项目。


2.1 新建项目(仓库)

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


新项目创建好后,需要创建分支,分配给项目成员。

Settings ——> Manage access ——>Invite a collaborator


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


收到邮件,接受邀请.

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


这样团队成员xiongyiming 既可以看到这个私人项目 test_teamwork



2.2 创建分支

下面还需要创建一个分支add_hello_world ,分配给项目成员xiongyiming 进行操作。

在这里插入图片描述


在这里插入图片描述


这样,就出现了新的分支 add_hello_world



2.3 项目成员在新分支上提交代码

私人项目地址: https://github.com/luohuayouyi666/test_teamwork

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


此时团队成员完成操作。

在这里插入图片描述



2.4 发送请求

团队成员xiongyiming完成了自己的任务,希望负责人检查自己的代码并合并分支,来表示自己的操作合格。此时需要发送请求。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述



2.5 讨论与审核代码

此时,需要等待项目负责人的审核,若果没问题就可以直接合并。自己合并和项目负责人合并都可以。
下面是项目负责人luohuayouyi666看到团队成员xiongyiming发送的请求。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


此时发现有拼写错误,并不能合并,要求团队成员重新修改。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


此时,团队成员xiongyiming账户上出现消息。


在这里插入图片描述


需要重新修改代码

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


代码改好了之后,不需要再重新发送请求了,直接在消息后面回复即可。

在这里插入图片描述


此时,项目负责人账户就会看到团队成员xiongyiming的修改内容并进行审核。

在这里插入图片描述


在这里插入图片描述


如果觉得没问题就可以选择合并分支



2.6 合并分支

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

此时,master 分支上就会出现新增的代码文件,这就是合并分支的效果。


在这里插入图片描述


然后,建立的分支也可以直接删除。


在这里插入图片描述


此时,add_hello_world 分支被删除后,项目只有一个 master 分支的,这样就完成了一个简单团队协作开发项目的操作了。

在这里插入图片描述




3 开源项目协作开发

开源项目协作开发就是自己的项目公开放在GitHub上,陌生人看到你的项目就可以Fork你的项目,然后更改内容,此时自己的项目(原作者的项目)不会发生变化。如果陌生人觉得更改的内容可以放进原作者的仓库中,就可以发送请求,原作者可以审核并判断是否可以合并。
开源项目协作开发和团队协作开发的区别在于,前者是和陌生人共同开发,后者是团队之间认识的人协作开发。在开发的过程中,团队之间协作开发可以邀请团队成员,而墨人生需要Fork项目之后才能进行更改,其他的操作二者之间原理相似:
创建分支——>提交代码——>发送请求——>讨论与审核——>合并分支


下面举个简单的例子来说明开源项目协作开发:
假设用户luohuayouyi666仓库中公开了一个项目: test_develop
用户xiongyiming在网上看到该项目觉得挺有意思并觉得还可以在升级,就Fork该项目并修改代码,此时希望原作者luohuayouyi666可以看到自己更改的代码并希望可以合并,就向作者发送请求。
下面具体来进行操作。



3.1 新建项目(仓库)

用户luohuayouyi666创建项目(仓库):test_develop

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


新增项目文件 hello_world.cpp

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述



3.2 Fork

用户xiongyiming发现用户luohuayouyi666创建项目(仓库):test_develop ,觉得该项目挺好,可以再升级开发,于是需要Frok该项目。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


此时,Fork该项目成功,这样可以对该项目随意修改,不会影响原作者的项目内容。



3.3 创建分支

用户xiongyiming发现该项目程序代码出现拼写错误,并且向增加一个代码文件,则可以创建分支直接修改。对于错误代码文件直接修改,选择创建分支进行增加其他代码,。

第一种类型: 直接修改 hello_world.cpp 文件中的错误并发送请求。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


修改好了项目原作者发送请求。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


发送请求成功后,原作者账户luohuayouyi666看到请求。

在这里插入图片描述


此时原作者可以查看修改了哪些内容,并可以向该用户讨论。

在这里插入图片描述


觉得没问题的话,就可以合并该请求。

在这里插入图片描述


在这里插入图片描述


接下来就合并成功了,自己的开源项目得到进一步的完善。

在这里插入图片描述


在这里插入图片描述


查看提交记录,可以看到用户的修改以及合并的记录。

在这里插入图片描述



第二种类型: 用户xiongyiming在Fork的项目上创建分支 add_test_sum,并添加自己的代码 test_sum.cpp文件

在这里插入图片描述


在这里插入图片描述


此时,分支 add_test_sum 创建成功。下面将在分支下提交自己的代码。



3.4 提交代码

在这里插入图片描述


在这里插入图片描述


代码提交成功,如下图所示,该分支下面出现新增加的 test_sum.cpp 文件

在这里插入图片描述



3.5 发送请求

代码提交成功后,希望原作者可以合并,需要提交请求。

在这里插入图片描述


在这里插入图片描述


发送请求成功如下图所示,下面就需要原作者进行审核。

在这里插入图片描述



3.6 讨论与审核代码

原作者luohuayouyi666账户可以看到用户xiongyiming发送请求,可以进行查看并审核。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述



3.7 合并分支

如果觉得代码没有问题就可以合并分支,将分支 add_test_sum 合并到 master 分支上。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


合并成功后,查看该项目下新增了一个 test_sum.cpp 文件,这样开源项目又得到了进一步完善。

在这里插入图片描述


用户xiongyiming可以删除原来的分支 add_test_sum,若想再进一步完善该项目,可以重新Fork该项目,因为有时候原项目有其他用户进行开发,为了方便自己知道是否和其他用户修改的内容发生冲突,可以重新Fork该项目,从而更了解别人开源项目的进展。




4 总结

GitHub协作开发项目可以分为团队协作开发和开源项目协作开发,前者项目成员之间互相认识,后者成员之间可能不认识。其实二者在操作时本质上的区别并不大。协作的主要几个步骤为:
创建分支——>提交代码——>发送请求——>讨论与审核——>合并分支


关于GitHub其他使用可以参见:

[1] Github初步使用
[2] GitHub下载加速




参考资料

[1] Understanding the GitHub flow
[2] 版本控制入门 – 搬进 Github