【发布时间】:2011-12-19 15:21:02
【问题描述】:
我们的团队使用 Github Pull Requests 来管理我们的工作流程,就像 what is described here。在手动审查接受的拉取请求后,我们有时需要恢复该合并,因为它还没有准备好部署到我们的生产服务器。
但是,如果开发人员再次尝试发出 Pull Request,它不会识别出这些更改已被还原,并且会看到提交已经在 master 分支中。它只会包括他们自恢复以来最近的提交,但我们真正想要的是重新引入所有已恢复的提交,以及他们的新工作。换句话说,我们喜欢一种重新发出原始拉取请求的方法。
由于 Github 不支持此功能(即,既不恢复合并,也不撤消/重新发出原始拉取请求),我目前正在恢复恢复的合并。这感觉不对。
在 git 中我可以使用哪些其他方法来实现相同的目标? (或 Github,如果可能的话)
【问题讨论】:
-
如果您已经在本地尝试合并来自拉取请求的提交,并且在测试后决定您还不想进行该合并,那么您为什么要恢复合并,而不是仅仅重置 master回到合并之前? (我假设您在合并拉取请求后但在决定是否保留它之前没有发布您的主分支。)
-
一旦拉取请求被接受,它会自动合并到主控中,所以我们团队中的任何人都可以随时从那里拉取。通过还原,我遵循了我在问题中引用的博客文章的建议,因为它允许我们简单地转移到其他拉取请求并最大限度地减少工作流程中的瓶颈。我担心重置会使事情变得更糟,因为我们的 repo 合作者总是可以使用 master。
-
啊,所以您实际上是在 GitHub 上接受拉取请求。 (要求 GitHub 实际进行合并的功能是最近才添加的。)相反,我会将建议的提交提取到您的本地存储库中,合并它们并在那里进行测试。如果您对此感到满意,那么您可以在 GitHub 上将拉取请求标记为已接受。
-
马克 - 你说得很好。我有点犹豫是否要在我们的流程中添加层,因为它曾经非常繁重,因此开发陷入停顿。但是,您给了我一个想法:如果有人将功能分支推送到我们很少使用的开发服务器之一,我可以设置 Jenkins 来运行 CI 规范。然后我可以防止一些问题蔓延到主人身上。但是,有时我仍需要还原或撤消操作,因此我仍在寻找答案。感谢您的帮助。
-
现在我更好地理解了这一点,我扩展了我的答案并取消了它。我同意,如果可以的话,使用 Jenkins 测试功能分支是个好主意。
标签: git github git-revert