您的位置:首页 > 编程语言

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

2018-01-14 00:00 309 查看
作者简介:郝健(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模式)

git clone git@github.com:ArtistH/github-test.git





注:
使用ssh的方式是为了每次push时候方便,不用每次输入github账号的密码。
本地库通过ssh协议与github仓库进行传输需要如下设置:
i.               创建SSH key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,创建SSHKey:ssh-keygen -t rsa -C youremail@xxx.com执行成功后,在用户主目录下的.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 requestDeveloper提交修改到自己的库以后,发现其库的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视频免费观看:
(视频免费分享)王玉成:用github有效组织项目讲座
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: