在我们的业务中,我们有以下设置(非常简化的版本),非常标准:
- 一个主分支,它通过钩子更新实时环境。
- 一个测试分支,用于 QA、UA,它以相同的方式更新测试环境。
该存储库托管在 GitHub 上。
工作流程通常如下:
- 从主人那里拉
- 创建一个分支,例如 Ticket1 来处理特定的工单
- 做工作,在本地测试
- 提交并推送分支 Ticket1
- 通过 github 中的 pull request 将 Ticket1 合并到测试中,这允许我们进行同行代码审查等。
也很标准。当我们有时会遇到向测试分支发出拉取请求时,在拉取请求中,github 显示的提交比应该由开发人员完成的提交要多。经过调查,当这种情况发生时,我们已经意识到至少有一个特殊情况(可能不是唯一一个):
- 开发者 A 进行一些更改以进行测试,通过 QA 和 UA,并与 master 合并。
- 开发人员 B 进行了更多更改。与master合并时,有冲突。开发人员 B 解决了冲突,并在新的提交中提交了对冲突的修复,id 为 1234567
- 开发人员 A 开始处理另一张工单:他从 master 拉取(因此拉取 1234567 提交),创建一个分支,提交,推送,当在 GitHub 上发出拉取请求以将他的分支合并到测试时,GitHub 想要合并其提交加上 1234567。这让他感到害怕,因为他对那个特定的提交一无所知。
我搜索了类似的问题,我至少发现:
他们处理了一个命令行解决方案(基本上使用'rebase')。但是他们没有为我们解决根本问题,那就是如何避免这种情况发生。我想知道为什么会发生这种情况,也就是说,我们知道什么时候会发生这种情况,但我们不知道是因为我们的工作流程存在根本性的缺陷,还是因为我们遗漏了一些关于 github 如何创建拉取请求的信息。
当然,这一定发生在你之前。你如何解决?