eqi cc git - GIT & 团队协作

GIT & 团队协作

感谢老大Rick的分享~
Agenda:
  1. 版本控制系统要解决的问题
  2. SVN的问题
  3. GIT怎么解决SVN的问题
  4.  Git基本使用
  5.  怎么用GIT为开源项目贡献代码
  6.  Git分支策略
  7. gitflow
  8.  bitbucket vs github
  9. 参考资料
1. 版本控制系统要解决的问题
a. 要解决的问题
  • 文件被别⼈人或⾃己覆盖,甚⾄至遗失
  • 想复原前几天写的版本
  • 想知道跟昨天写的差在哪裡
  • 是谁改了这段代码,为什么
  • 软件发⾏,需要分成维护版跟开发版
b. 版本控制系统的功能
  • 建立 Repository (储存库),⽤来保存代码/文档
  • 可以随时复原修改,回到之前的版本
  • 多⼈协作时,不会把别⼈的东⻄覆盖掉
  • 保留修改历史记录,以供查询: 谁改变了什么、在什么时候、因为什么原因
  • Branch,可因不同情境分开开发, 版本管理
  • Tag, 重要⾥程碑
2. SVN的问题
SVN是一种集中式版本控制系统
eqi_cc_2
  • 集中式的VCS 系统,做任何事都要和服务器连接(看提交日志,进行比较等等),
    没网路就不能开发, 无法 commit,无法看 history log。
    • 坐高铁,坐飞机的时候
    • 网路故障的时候
    • 咖啡店没有无线网路的时候    ‧
  • 单点故障
3. GIT怎么解决SVN的问题
分布式版本控制系统,Git仓库本地存储:
eqi_cc_3
  • 即使没网路,照常可以 commit 和看 history log,切换分支。
  • 不用担心server备份(单点故障)
  • 各种操作速度快(都在本地)
为什么GIT是一个好的选择:
4. Git 基本使用
Git 历史:
 eqi_cc_4
Git教程:

eqi_cc_4_2

5. 怎么用GIT为开源项目贡献代码
 eqi_cc_5
超大型项目(比如Linux内核):

eqi_cc_5_2

流程
  1. find the target open source project (in github)
  2. fork
  3. clone to local
  4. change to local, push to origin
  5. pull request to upstream
  6. merge in upstream
Pull Request
eqi_cc_5_4eqi_cc_5_5
围绕Github生态、工具:
Web方面好的开源项目:
Git commit message:
6. Git分支策略Gitflow
  • 本地分支,创建分支非常快(git checkout -b branch_name),切换分支非常快(git checkout branch_name),非常方便
  • feature branch:可以多个人一起在一个feature上工作
  • develop branch:开发主分支,主要用来集成、测试
  • master branch:master分支上存放的应该是随时可供在生产环境中部署的代码(Production Ready state)。当开发活动告一段落,产生了一份新的可供部署的代码时,master分支上的代码会被更新。同时,每一次更新,最好添加对应的版本号标签(TAG)。
  • Hotfix branch:当生产环境中的软件遇到了异常情况或者发现了严重到必须立即修复的软件缺陷的时候,就需要从master分支上指定的TAG版本派生hotfix分支来组织代码的紧急修复工作
  • release分支:但develop上产生了一个稳定的版本可以发布时,从develop分支分出来,在这个分支上的代码允许做小的缺陷修正。通过在release分支上进行这些工作可以让develop分支空闲出来以接受新的feature分支上的代码提交,进入新的软件开发迭代周期。01YiLAQQnlPV
参考:
7. Git-Flow的两个实现
下面是Hubflow的实现版本:
 eqi_cc_7
8. bitbucket vs github
价格相差不大:
eqi_cc_8
  • Bitbucket: 更多的权限控制(branch write/read, pull request approval等等),JIRA集成
  • 一些典型客户: GitHub Enterprise are Blizzard, Rackspace and Etsy. Nasa, Netflix and Philips are with Stash.
安全问题:
  • 没有绝对的安全
  • Github业界顶级专家 vs 员工安全?
  • 代码中不能有生产环境的配置(IP, 用户名,密码,等等)
 
中国用户@github:
9. 参考资料

发表回复

电子邮件地址不会被公开。 必填项已用*标注