git - 在 SQUASHED 时检查 Git 分支是否已 merge 到 master 中?

标签 git github merge branch squash

我想自动清理远程分支。我希望能够检查一个分支是否已经 merge 到 master 中。最初,我的计划是使用 git merge-base 查看最后的共同提交。

然而,事实证明,当我们将所有分支 merge 到 master 中时,我们压缩了所有分支。因为这会创建一个新的提交哈希,所以我无法找到 master 和我的分支之间的共同提交。

如果我们在 merge 时将它们全部压缩,我该如何确定分支是否已被 merge ?

提前致谢!

最佳答案

这是一种方法:

  1. 使用 GitHub API 获取所有 merge pull 请求的 HEAD SHA。
  2. 将这些 SHA 与本地分支机构进行匹配。

如果本地分支的 HEAD 与已 merge 的 PR 的 HEAD 相对应,那么您可以安全地删除它。无论 PR 如何 merge (完全 merge 、快进、压缩和 merge ),这都将起作用。

我在 delete-squashed-branches 中实现了这种方法脚本。下面是用法:

(master) $ git branch
  delete-merged-prs
  fixup
  unmerged-branch
* master

(master) $ delete-squashed-branches
Finding local branches which were merged onto origin/master via GitHub...
warning: deleting branch 'delete-merged-prs' that has been merged to
     'refs/remotes/origin/delete-merged-prs', but not yet merged to HEAD.
Deleted branch delete-merged-prs (was 325a42b).
warning: deleting branch 'fixup' that has been merged to
     'refs/remotes/origin/fixup', but not yet merged to HEAD.
Deleted branch fixup (was e54f54b).

(master) $ git branch
  unmerged-branch
* master

(可以忽略警告,因为分支是通过 Squash & Merge merge 到 master 上的。)

注意事项:

  • 您需要pip install pygithub 才能使用该脚本。
  • 它将寻找 merge 到 origin/(current branch) 的本地分支。因此,您需要在 masterdevelop 或您工作的任何分支上运行它。
  • 如果您有多个长期存在的分支,这种方法就不会很有效。

关于git - 在 SQUASHED 时检查 Git 分支是否已 merge 到 master 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27260574/

相关文章:

git - tig 配置 : set on tigrc --all as default

即使在基本身份验证后,Github API 速率也限制为 60

git - "ssh_exchange_identification: read: Connection reset by peer"尝试连接到 git 上的远程存储库时出错

git - 如何在 git 上设置与默认作者不同的默认提交者?

r - 在 for 循环中合并和命名数据帧

OneDrive 同步文件夹中的 Git 存储库

git - 如何从 `commit-msg` git hook 中打开终端编辑器

git - Build.Reason 显示 Azure Devop 中除 PullRequest 之外的 individualCI

python - 合并数据框/面板以允许导出到 *ONE* excel 表,而不是多个

javascript - 如何使用 jquery/Javascript 将段落合并到父链接中?