在使用压扁时,无法确定分支是否已合并

时间:2016-10-28 17:00:30

标签: git github atlassian-sourcetree

我的团队使用github和sourcetree来管理我们的工作流程。我们最近开始尝试使用github的壁球合并功能。我们真的很喜欢它如何使我们的工作历史保持整洁,并且每个PR基本上只有一次提交。

使用squash提交的一个意想不到的缺点是,很难判断何时可以删除本地分支。我的整个团队似乎管理他们的本地分支机构,因为他们能够在提交图中直观地看到它已被合并,并且每隔几天我们就会逐一查看我们当地的分支机构,看看他们是否&# 39;已合并,然后在本地将其删除(如果有)。启用壁球合并会消除此可视化,使我们很难判断分支是否已合并。

我们真的很想使用壁球提交功能,但我们需要一种可靠的方法来确定分支是否已合并,并且可以安全地在本地删除。我们还没有想过要实现这个目标的好方法吗?

1 个答案:

答案 0 :(得分:5)

  

我的整个团队似乎管理他们的本地分支,因为能够在提交图中直观地看到它已被合并,

这似乎是这里的实际问题。如果您已经在使用GitHub拉取请求工作流程,则拉取请求的状态应该是此问题的权威答案。公关被接受了吗?好!分支合并,继续你的生活。

您可能需要考虑的一个选项是采用(并可能强制执行)您只接受单一提交请求的工作流。让人们在他们的本地存储库中做任何他们想做的事情,但是在提交拉取请求时,他们会在提交之前将相应的提交压缩在一起(并在本地自由使用rebase工作流以更新拉取请求,如果他们需要进行更改)。

这样做的好处是“视觉检查”方法将继续有效,因为你将不再在GitHub上合成提交。

<强>更新

我将使用GitHub API的a small tool放在一起,以确定与给定提交sha关联的拉取请求是否已关闭。将git-is-merged脚本放到某处$PATH,然后就可以执行此操作:

$ git checkout my-feature-branch
$ git is-merged
All pull requests for 219e0f04a44053633abc947ce2b9d700156de978 are closed.

或者:

$ git is-merged my-feature-branch
All pull requests for 219e0f04a44053633abc947ce2b9d700156de978 are closed.

该脚本返回以下状态文本和退出代码:

  • 没有拉取请求
  • 所有拉取请求已关闭
  • 某些拉取请求已关闭
  • 所有拉取请求均已打开

对于压缩提交,您可以使用任何提交sha,这些提交sha是原始pull请求的一部分压缩提交的提交sha。

如上所述,此工具仅适用于公共存储库,但它使用支持身份验证的PyGithub模块。