如何借助Github进行协同开发

平常都是自己一个人在开发,一直都没有机会接触协同开发,平常使用 Github 时也就是简单的 add, commit, push,并由体会到 Git 带给我们
更多的好处,那么如何借助 Github 进行协同开发,现在来简单的尝试一下

准备工作

如果你想只是想简单的尝试下协同开发,而不像基于参与真正的开发,那么创建一个测试项目来实验一下是最合适不过的了

首先打开 Github ,接着点击 New repository,创建一个空项目,简便起见,我们在创建新项目时顺便勾选 Initialize this repository with a README 这个选项,这样我们的项目至少还有一个 README 文件,而不至于什么也没有

为了便于后文进行描述,这里约定

  • 把拥有原始仓库的操作者称为 master
  • 把 fork 了原始项目的操作者称为 follower

那么现在 master 已经创建好仓库了,接着 follower 也想和 master 一起开发这个项目,那么 follower 要做的就是在 Github 上 fork master 的这个项目

那么 follower 的 Github 上也有了一份这个项目的副本

接下来 follower 把项目 clone 到本地,复制项目的 ssh

打开 Git Bash,输入下面的命令 (请用复制的 ssh 替换掉 )

1
$ git clone <follower ssh>

稍等片刻,即可进行项目的开发了

对本地项目进行更新

follower 已经把项目 clone 到本地了,这里要注意的就是,每次进行开发时要保持跟 master 项目一样的进度,也就是把 master 的代码更新到本地

那么在更新之前, follower 要做的就是添加 master 的远端连接,这里需要 master 远端的 ssh,操作参考上一节,命令如下

1
$ git remote add upstream <master ssh>

添加成功过后就可以更新本地代码

1
$ git remote update

接着合并 master 的分支,(这里的 master 是指 upstream 的 master, 即远端的 master,而不是本地的)

1
$ git merge upstream/master

现在 follower 本地的代码已经更新完了,接下来就是进行项目的开发

对项目进行开发

因为 follower 是作为 master 合作者的,所以 follower 在开发时最好能建立一个分支,然后在分支上进行开发

1
2
$ git banch dev
$ git checkout dev

上面两个命令分别是创建一个 dev 分支,并且把本地分支切换至 dev 分支

也可以使用下面的命令,创建加切换一起完成

1
$ git checkout -b dev

现在就已经到 dev 分支上了,那么我们就在这个分支上进行开发,因为项目很简单,所以简单修改下 README 即可,接着就可以 add、commit、push 三部曲更新 follower 的代码了

1
2
3
$ git add .
$ git commit -m ":memo: update"
$ git push -u origin dev

这时候 follower 进入 Github 就会发现在该项目下多了一行下面的东西

点击 Compare & pull request ,然后填写一些必要信息再点击 Create pull request 即可

至此, follower 的代码编写与提交就算完成,接下来就是 master 的任务了

合并分支

此时 master 在 Github 就可以看到在项目顶部栏上多了一个 pull request

那么点击去找到这个 pull request 请求就可以看到下面的信息

点击 Merge pull request 然后 confirm 就可以把 follower 更新的代码合并到自己的项目里。

此时 master 再在本地使用下面的命令就可以把远端的代码更新到本地了

1
$ git pull

同步本地代码

这里要注意的就是,如果 master 更新了代码,就会导致 follower 的本地与 master 的远端不一致,那么 follower 就没办法提交 pull request 了,所以 follower 在开发前最好进行代码的更新

1
2
$ git remote update
$ git merge upstream/master

同之前的更新操作是一样的。或者使用下面的命令进行更新也是可以的

1
2
$ git fetch upstream
$ git merge upstream/master

尽量减少冲突

用 Github 进行协同开发我觉得实在所难免,但要尽量的减少冲突,那么就需要在进行开发的时候做好一个约定,大家在进行开发的时候就按照这个约定进行开发。

其次,在 Github 上开发的项目最好不要上传一些不必要的文件,比如 IDE 的配置文件( Intellij IDEA 的 .idea、*.iml) 等,那么如何忽略这些文件,或者如果你已经开始了一些项目,怎么把 Github 上的不必要的文件去掉而不影响本地,可以参考我的另一篇文章 如何管理你Github上的开源项目

多说一句

因为平常都是一个人在写代码,所以还没有机会尝试如何去进行真正的协同开发,但是这又是一个必备的技能,所以在简单的实践过后,分享了一下自己的经验。因为没有实际合作经验,难免有疏漏和不足,所以在实际开发中遇到了问题还需要自己去查阅,具体情况具体分析,这样协同合作才能游刃有余。

Author: Inno Fang
Link: http://innofang.github.io/2018/03/17/%E5%A6%82%E4%BD%95%E5%80%9F%E5%8A%A9Github%E8%BF%9B%E8%A1%8C%E5%8D%8F%E5%90%8C%E5%BC%80%E5%8F%91/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-ND 4.0 unless stating additionally.