首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

郝健:github多人协作项目开发实操笔记

作者简介:

郝健(Artist),目前就职于赛尔网络CERNET技术开发部,研发项目经理;以前在天融信Topsec软件平台部做防火墙核心系统开发。

本文简介:

这是网友Artist在看完王玉成老师的github视频直播后的笔记。他详细地记录了自己一步步在github上进行操作的过程。感兴趣的读者也可以按照他这个笔记一步步来做,这样github的功能也就学会七七八八了。

1. git特点

useful:

https://help.github.com/

分布式

提交同步不频繁

速度快, 灵活

2.用git工具完成一个项目中间必须经过的几个环节

useful:

https://guides.github.com/introduction/flow/

0) 创建仓库

1) 添加分支

Eg. 甲, 乙, 丙三个人开发三个模块 a, b, c.

每个人一个分支, 分别为 a, b, c

2) 完成提交

3) pull request(管理员未审核代码的阶段)

4) review your code

5) deploy(部署代码测试)

6) Merge(测试发布后, 合并到主分支, 用于下次迭代)

3.实践 演练使用git完成项目环节

Maintainer:step1创建库

Maintainer:step2 clone 库到本地

git clone https://github.com/YuchengWang/github-test.git

做一些代码修改,然后提交

Developer:step1 fork Maintainer库到自己的github

Developer:step2下载代码到本地(这时候一般用ssh模式)

注:

使用ssh的方式是为了每次push时候方便,不用每次输入github账号的密码。

本地库通过ssh协议与github仓库进行传输需要如下设置:

i.创建SSH key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,创建SSHKey:

执行成功后,在用户主目录下的.ssh目录中会生成id_rsa和id_rsa.pub两个文件,这两个文件就是SSH Key的秘钥对,id_rsa是私钥,id_rsa.pub是公钥。

ii.登陆GitHub,打开“Personal settings” -> “SSH and GPG Keys”页面,然后点击“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

GitHub允许用户添加多个Key,方便同一账号在多台主机登陆push代码。

Developer:step3 修改本地代码并提交到自己库

Developer:step4 pull request

Developer提交修改到自己的库以后,发现其库的commit与Maintainer库的commit不再一致。

于是,Developer向Maintainer库发起pull request

注意Developer对此pull request是做不了任何操作的。

Maintainer:step3审核代码,处理pull request

可以看到代码的具体改动。

Maintainer:step4审核通过,Merge

i.Create a merge commit, Merge Developer 刚刚提交的代码

ii.Squash and merge 把 Developer commit 多次的代码合并成一个commit然后 Merge

iii.Rebase and merge 从最原始的分支上做 pull request

Maintainer merge pull request后,可以发现Maintainer库的commit再次领先于Developer库的commit。多出的commit即为Maintainer刚刚merge pull request的commit。

Developer:step5 再次与Maintainer库进行同步

git remote –v

git remote add upstream https://github.com/YuchengWang/github-test.git

然后再执行 git remote-v

然后把上游分支代码更新到本地:git fetch upstream

然后验证当前分支是否为master分支

可以看到本地分支为master,远程分支为origin/master。

然后git merge upstream/master,在本地merge上游分支,然后再执行git push origin master,可以发现Developer库的commit与Maintainer库一致,最终完成与Maintainer库代码同步。可以通过git log查看。

注:在merge pull request过程中可能遇到冲突,需要Maintainer解决冲突后,状态变为no conflicts,即可以 merge pull request。

产生冲突文件为 main.c

解决掉冲突后变为 no conflicts,可以 merge pull request。

4. Issues

GitHub的issue功能,对个人而言,就如同TODO list。你可以把所有想要在下一步完成的工作,如feature添加、bug修复等,都写成一个个的issue,放在上面。

每一次commit都可以选择性的与某个issue关联。比如在message中添加#n,就可以与第 n个issue进行关联。

commit message title, #1

对用户而言,你可以通过issue给别人的项目提bug。

5. Wiki

useful:https://github.com/gdsub/atdocs/wiki

wiki 库与开发库是分开的,如项目经理不参加开发只维护 wiki 库。

使用 Markdown 格式编写。

6.管理

库本身操作:可以设置一些 Features

Branchs 操作:如导出branch,将某个分支保护起来不允许提交。

Collaborators:添加可以merge代码的普通用户。

附注:

Question:fork,star,watch

fork:服务端仓库克隆,pullrequest等操作都要在fork的基础上完成

star:代码受欢迎度

watch:库的更改都发邮件通知,可以具体设置

wiki:https://github.com/ArtistH/github-test.wiki.git

王玉成github视频免费观看:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180114B0BQYA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券