例如,我在开发 feature/user
用户管理模块,提供用户的名称,信息等等, 我的同事在开发 feature/login
登录系统,他需要我的用户模块来检测是否可以登录,获取用户信息等等。
问题1:
假设我已经完成了用户系统,那么怎么给我的同事让他使用?
难道是我先 finish
, 同事再 finish
, 同事再 start
么?不太现实。
问题2:
假设我没有完成用户系统,但是我完成了同事所需要的内容,那怎么给他使用?
难道是我先 finish
, 同事再 finish
, 我和同事再 start
,分别继续开发么?
这些有什么好的解决方案么?
补充:首先主要是时间太紧张了,一个人肯定写不来,所以要多个人一起,可是多个人又会牵扯依赖问题。所以想知道如何解决这个问题。
由于你并未提及是否在同一个工程项目下进行开发; 这里我先假设你是同一个项目, 在阐述我的意思之前请你首先看一看下面这几点, 你是否都清楚:
git的节点之间是对等的
git支持ssh,http,file等协议
我的建议:
假设John和Jane两人合作开发同一个项目;
John创建一个项目demo, 该项目在它的个人目录下;
Jane如果和John在同一个开发机, 那么她可以直接在自己的home下clone出John的代码
现在John可以继续开发, Jane也可以继续开发, 两人都可以持续提交;
由于Jane直接clone的John的代码,所以在Jane的目录下git天然记录了另外一个开发者的地址, 它的名字叫做remote,具体内容在.git/config中, 配置字段名字叫做origin; Jane
可以直接拉取origin源的所有更新到自己的代码;
问题来了,如果John也需要Jane的代码呢? 由于John的git项目中还没任何其他开发节点的信息, 他需要自己手工添加; 添加完之后他就可以随时拉取Jane的更新;
现在John和Jane就可以互相拉取对方的代码到自己的文件夹中; 愉快地开发了;
我觉得这个需求在分工上就冲突了
一个模块强依赖另一个模块,必然要进入等待
所以再细化你们的需求
User模块完成后就可以提交
此时你分支你的模块再继续
你同事分支他的模块再继续
这是标准流程
有个概念叫持续集成,越早进行集成操作对你们的代码越有利
往下延伸的概念叫持续交付都是应付这种环境的 可以参考
对于这种情况我建议这个方法:
从
feature/user
分支上开出一个新的分支feature/user_login
当
feature/user
开发进入到可用的阶段时, 把代码往feature/user_login
上合并这样
feature/user_login
可以直接进行测试当
feature/user_login
开发完毕后,合并到feature/user
上最后
finish
feature/user
这样是将
feature/user_login
作为feature/user
的一个子功能开发的如果再做功能的时候不是这样设计的, 那最好还是将
feature/user
finish
后再开发feature/login