测试多分支开发对合并代码的影响

在多人开发的项目中,通常会有 master、dev、test 分支,每一个分支的做用也是不同的。master 是用于线上环境,个别负责人才有合并权限的;dev 用于开发环境;test 用于测试环境。通常的合并流程是dev→test→master。可是,若是多我的同时在一个分支如 test 分支上写代码,有的代码要上线,有的之后才上,这样就会致使不上线的代码也会被合并到 master 上php

因此,开发新功能的时候通常会在最新的master 分支切出一个分支来开发。git

遇到的问题

最近在一个项目新增功能,因而在 master 切了一个分支进行开发,分支就叫add_feature吧。在把代码合并到 master 分支的时候,遇到一个问题,显示“在这个合并请求的源分支中,当前没有任何更改”(Currently there are no changes in this merge request's source branch.)我就很奇怪,明明没有提交合并请求过,master 怎么会有个人代码呢?而后我在 master 分支上git log,发现有个人提交记录,觉得 master 分支上已经有个人代码了。因而把合并请求关闭了。api

结果 master上线以后,我调了一下个人代码涉及到的 api 接口,竟然404了。在 add_feature上写好代码后,我会把代码合并到 test,而后部署到测试环境进行测试。我猜想有人在 直接在test 分支上开发,须要上线代码,发现 test 分支掺杂着个人代码,因而把个人代码删除,而后合并到 maseter,结果 master 里有个人 commit,致使我没法将 add_feature 合并到 master 分支。函数

重现步骤

为简化步骤,只建立 master、test、add_feature 分支。测试

  1. 新建一个仓库,初始化 master 分支代码,代码以下:
  2. 在 master 分支切出新分支 add_feature,而后添加新代码——函数 test1(),截图中有详细步骤:

3. 而后在 master 分支切出新分支 test,供你们测试使用。再将 add_feature 合并到 test,部署新添加的功能:

4. 某位同事A在 test 分支上新增 test2()功能,提交代码:

5. 同事 A 要上线 test2(),可是暂时不上线 test1(),因而他把 test1()代码删除了:

6. 负责人执行合并 test 分支请求,结果以下:

git log 发现也是有 add_feature的提交记录:

7. 此时也须要将 test1()的功能上线,因而决定将 add_feature合并到 master 分支:

结果有点诧异,代码已是最新的。 使用 git diff add_feature查看,两个分支是有差别的:

8. 问题得以重现。

结论

多人合做不要直接在 test 分支上开发,若是已经开发了,也不要把别人的代码删掉,注释掉就行了。this

存疑

本人仍是新手,不了解这内部的原理是什么。也有可能个人这些步骤出问题了,若是有不对的地方,但愿大佬们可以指出。谢谢你们。3d

写此文仅以记录开发中遇到的问题。code

原文连接cdn

相关文章
相关标签/搜索