Git 私有团队间协作
来源:互联网 发布:打车软件除了滴滴 编辑:程序博客网 时间:2024/05/21 06:26
私有团队间协作
现在我们来看更大一点规模的私有团队协作。如果有几个小组分头负责若干特性的开发和集成,那他们之间的协作过程是怎样的。
假设 John 和 Jessica 一起负责开发某项特性 A,而同时 Jessica 和 Josie 一起负责开发另一项功能 B。公司使用典型的集成管理员式工作流,每个组都有一名管理员负责集成本组代码,及更新项目主仓库的 master
分支。所有开发都在代表小组的分支上进行。
让我们跟随 Jessica 的视角看看她的工作流程。她参与开发两项特性,同时和不同小组的开发者一起协作。克隆生成本地仓库后,她打算先着手开发特性 A。于是创建了新的 featureA
分支,继而编写代码:
# Jessica's Machine $ git checkout -b featureA Switched to a new branch "featureA" $ vim lib/simplegit.rb $ git commit -am 'add limit to log function' [featureA 3300904] add limit to log function 1 files changed, 1 insertions(+), 1 deletions(-)
此刻,她需要分享目前的进展给 John,于是她将自己的 featureA
分支提交到服务器。由于 Jessica 没有权限推送数据到主仓库的 master
分支(只有集成管理员有此权限),所以只能将此分支推上去同 John 共享协作:
$ git push origin featureA ... To jessica@githost:simplegit.git * [new branch] featureA -> featureA
Jessica 发邮件给 John 让他上来看看 featureA
分支上的进展。在等待他的反馈之前,Jessica 决定继续工作,和 Josie 一起开发 featureB
上的特性 B。当然,先创建此分支,分叉点以服务器上的 master
为起点:
# Jessica's Machine $ git fetch origin $ git checkout -b featureB origin/master Switched to a new branch "featureB"
随后,Jessica 在 featureB
上提交了若干更新:
$ vim lib/simplegit.rb $ git commit -am 'made the ls-tree function recursive' [featureB e5b0fdc] made the ls-tree function recursive 1 files changed, 1 insertions(+), 1 deletions(-) $ vim lib/simplegit.rb $ git commit -am 'add ls-files' [featureB 8512791] add ls-files 1 files changed, 5 insertions(+), 0 deletions(-)
现在 Jessica 的更新历史如图 5-12 所示:
图 5-12. Jessica 的更新历史
Jessica 正准备推送自己的进展上去,却收到 Josie 的来信,说是她已经将自己的工作推到服务器上的 featureBee
分支了。这样,Jessica 就必须先将 Josie 的代码合并到自己本地分支中,才能再一起推送回服务器。她用 git fetch
下载 Josie 的最新代码:
$ git fetch origin ... From jessica@githost:simplegit * [new branch] featureBee -> origin/featureBee
然后 Jessica 使用 git merge
将此分支合并到自己分支中:
$ git merge origin/featureBee Auto-merging lib/simplegit.rb Merge made by recursive. lib/simplegit.rb | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)
合并很顺利,但另外有个小问题:她要推送自己的 featureB
分支到服务器上的 featureBee
分支上去。当然,她可以使用冒号(:)格式指定目标分支:
$ git push origin featureB:featureBee ... To jessica@githost:simplegit.git fba9af8..cd685d1 featureB -> featureBee
我们称此为refspec。更多有关于 Git refspec 的讨论和使用方式会在第九章作详细阐述。
接下来,John 发邮件给 Jessica 告诉她,他看了之后作了些修改,已经推回服务器 featureA
分支,请她过目下。于是 Jessica 运行 git fetch
下载最新数据:
$ git fetch origin ... From jessica@githost:simplegit 3300904..aad881d featureA -> origin/featureA
接下来便可以用 git log
查看更新了些什么:
$ git log origin/featureA ^featureA commit aad881d154acdaeb2b6b18ea0e827ed8a6d671e6 Author: John Smith <jsmith@example.com> Date: Fri May 29 19:57:33 2009 -0700 changed log output to 30 from 25
最后,她将 John 的工作合并到自己的 featureA
分支中:
$ git checkout featureA Switched to branch "featureA" $ git merge origin/featureA Updating 3300904..aad881d Fast forward lib/simplegit.rb | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)
Jessica 稍做一番修整后同步到服务器:
$ git commit -am 'small tweak' [featureA ed774b3] small tweak 1 files changed, 1 insertions(+), 1 deletions(-) $ git push origin featureA ... To jessica@githost:simplegit.git 3300904..ed774b3 featureA -> featureA
现在的 Jessica 提交历史如图 5-13 所示:
图 5-13. 在特性分支中提交更新后的提交历史
现在,Jessica,Josie 和 John 通知集成管理员服务器上的 featureA
及 featureBee
分支已经准备好,可以并入主线了。在管理员完成集成工作后,主分支上便多出一个新的合并提交(5399e),用 fetch 命令更新到本地后,提交历史如图 5-14 所示:
图 5-14. 合并特性分支后的 Jessica 提交历史
许多开发小组改用 Git 就是因为它允许多个小组间并行工作,而在稍后恰当时机再行合并。通过共享远程分支的方式,无需干扰整体项目代码便可以开展工作,因此使用 Git 的小型团队间协作可以变得非常灵活自由。以上工作流程的时序如图 5-15 所示:
图 5-15. 团队间协作工作流程基本时序
git 中文学习网站:http://git.oschina.net/progit/5-%E5%88%86%E5%B8%83%E5%BC%8F-Git.html#5.2-%E4%B8%BA%E9%A1%B9%E7%9B%AE%E4%BD%9C%E8%B4%A1%E7%8C%AE
- Git 私有团队间协作
- Git团队协作
- Git团队协作工作流程
- 小团队Git协作流程
- Git团队协作使用规范
- Git 私有的小型团队
- git 团队协作规范及常用命令
- 基于git版本控制团队协作流程
- 基于git进行团队协作开发
- 团队协作需要使用的git 命令
- 使用Git实现团队协作开发提高效率
- Git教程 团队协作开发流程
- Git学习笔记(二)--团队协作
- GIT 团队协作快速入门使用
- github之git命令-团队协作
- git是什么?如何使用git进行团队协作?
- git是什么?如何使用git进行团队协作?
- 团队协作
- AngularJS: Factory vs Service vs Provider
- 西邮Linux笔试题详解
- shell get ip address netmask dns
- VLAN简析
- 混杂设备驱动--输出两路PWM
- Git 私有团队间协作
- 哈夫曼树
- C++课后习题作业
- python 数字转换成字符串
- Linux cp 命令的15个示例 - 创建文件和目录的副本
- const 和 #define区别
- pots
- OJ-矩阵求和--重载运算符
- linux 下nginx安装与配置