Github工作流和pull请求显示不需要的提交

时间:2012-08-09 09:21:57

标签: git github merge commit pull-request

在我们的业务中,我们有以下设置(非常简化的版本),非常标准:

  • 主分支,通过钩子更新实时环境。
  • 用于QA,UA的测试分支,以相同的方式更新测试环境。

回购在GitHub上托管。

工作流程通常如下:

  • 从主人拉
  • 创建分支,例如Ticket1用于处理特定的票证
  • 做好工作,本地测试
  • 提交并推送分支Ticket1
  • 通过github中的pull请求将Ticket1合并到测试中,这允许我们进行同行代码审查等。

非常标准。当我们有时遇到测试分支的pull请求时,在pull请求中,github会显示更多提交,这些提交应该由开发人员完成。经过调查,我们已经意识到至少有一个特定情况(可能不是唯一的情况):

  1. 开发人员A对测试进行了一些更改,通过了QA和UA,并与主人合并。
  2. 开发人员B进行了一些更改。与master合并时,存在冲突。开发人员B解决冲突并在新的提交中提交修复冲突,例如id为1234567
  3. 开发人员A开始工作到另一张票:他从master获取(因此拉动1234567提交),创建分支,提交,推送以及在GitHub上执行pull请求以将其分支合并到测试中时GitHub想要合并其提交加上1234567.这让他很害怕,因为他对这个特定的提交一无所知。
  4. 我搜索过类似的问题,我至少找到了:

    他们处理命令行解决方案(基本上使用'rebase')。但是他们没有为我们处理根本问题,那就是如何避免这种情况发生。我想知道为什么会发生这种情况,意思是,我们知道何时发生,但我们不知道是不是因为我们的工作流程中存在根本性的缺陷,或者因为我们遗漏了一些关于如何github创建了拉取请求。

    肯定这一定发生在你之前。你是如何处理它的?

1 个答案:

答案 0 :(得分:1)

我猜你有一个程序性的“锁定”问题,并且各个票务分支及其合并点的起点在拉点和最终合并之间变得重叠。修复点。

开发人员认为他们已经在pull请求中完成了ticket1,但实际上不应该启动ticket2的分支,直到合并&修复是在[小时/天后?]。否则修复程序实际上不会显示在ticket2的开头。然后当ticket2被拉出时,它仍然没有修复它所以看起来它需要重新应用。

假设您需要线性序列的票证合并循环,开发人员需要重新获取master(包含所有约定的修复程序!),并在发出拉取请求之前进行rebase。

使用gitk或类似方法围绕其中一个问题可视化所有分支,并检查时间戳和审核会议时间,看看是否是隐藏的死区。