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

作者简介:

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

郝健: github多人协作项目开发实操笔记_第1张图片

本文简介:

这是网友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创建库

郝健: github多人协作项目开发实操笔记_第2张图片

郝健: github多人协作项目开发实操笔记_第3张图片

Maintainer:step2 clone 库到本地

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

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

郝健: github多人协作项目开发实操笔记_第4张图片

Developer:step1 fork Maintainer库到自己的github

0?wx_fmt=png

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

git clone [email protected]:ArtistH/github-test.git

郝健: github多人协作项目开发实操笔记_第5张图片

注:

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

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

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

ssh-keygen -t rsa -C [email protected]

执行成功后,在用户主目录下的.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多人协作项目开发实操笔记_第6张图片

郝健: github多人协作项目开发实操笔记_第7张图片

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

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

郝健: github多人协作项目开发实操笔记_第8张图片

Developer:step4 pull request

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

郝健: github多人协作项目开发实操笔记_第9张图片

于是,Developer向Maintainer库发起pull request

0?wx_fmt=png

郝健: github多人协作项目开发实操笔记_第10张图片

郝健: github多人协作项目开发实操笔记_第11张图片

郝健: github多人协作项目开发实操笔记_第12张图片

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

 

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

郝健: github多人协作项目开发实操笔记_第13张图片

郝健: github多人协作项目开发实操笔记_第14张图片

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

郝健: github多人协作项目开发实操笔记_第15张图片

Maintainer:step4审核通过,Merge

郝健: github多人协作项目开发实操笔记_第16张图片

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

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

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

郝健: github多人协作项目开发实操笔记_第17张图片

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

 

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

git remote –v

0?wx_fmt=png

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

然后再执行 git remote-v

0?wx_fmt=png

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

郝健: github多人协作项目开发实操笔记_第18张图片

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

0?wx_fmt=png

0?wx_fmt=png

可以看到本地分支为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。

郝健: github多人协作项目开发实操笔记_第19张图片

产生冲突文件为 main.c

郝健: github多人协作项目开发实操笔记_第20张图片

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

郝健: github多人协作项目开发实操笔记_第21张图片

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. 管理

郝健: github多人协作项目开发实操笔记_第22张图片

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

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

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

 

附注:

Question:fork,star,watch

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

star:代码受欢迎度

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

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

王玉成github视频免费观看:

(视频免费分享)王玉成:用github有效组织项目讲座


你可能感兴趣的:(郝健: github多人协作项目开发实操笔记)