使用壁球时无法确定分支是否已合并

spi*_*ce7 6 git github atlassian-sourcetree

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

使用squash提交的意外缺点之一是很难判断何时可以删除本地分支.我的整个团队似乎管理他们的本地分支,因为他们能够在提交图中直观地看到它已被合并,并且每隔几天我们将逐一查看我们的本地分支,看看他们是否已经合并,然后如果它有本地删除它.启用压缩合并会消除此可视化,并使我们很难判断分支是否已合并.

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

lar*_*sks 5

我的整个团队似乎都是基于能够在提交图中直观地看到已合并的,来管理其本地分支机构,

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


您可能要考虑的一个选择是采用(并可能强制执行)仅接受单次提交请求的工作流。人们可以在自己的本地存储库中进行任何想要的操作,但是在提交请求时,他们会在提交之前将适当的提交压缩在一起(并在需要时进行更改时,自由地使用本地的变基工作流来更新请求)。

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


更新资料

我整理了一个使用GitHub API 的小工具,以确定与给定提交Sha相关的拉取请求是否已关闭。将git-is-merged脚本放入您的$PATH某个位置,然后可以执行以下操作:

$ git checkout my-feature-branch
$ git is-merged
All pull requests for 219e0f04a44053633abc947ce2b9d700156de978 are closed.
Run Code Online (Sandbox Code Playgroud)

要么:

$ git is-merged my-feature-branch
All pull requests for 219e0f04a44053633abc947ce2b9d700156de978 are closed.
Run Code Online (Sandbox Code Playgroud)

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

  • 没有拉取请求
  • 所有拉取请求均已关闭
  • 一些拉取请求已关闭
  • 所有拉取请求均处于打开状态

对于压缩的提交,您可以使用原始拉取请求中包含的任何提交阴影压缩的提交中的提交阴影。

按照书面说明,该工具仅适用于公共存储库,但是它使用的PyGithub模块支持身份验证。