git - 删除所有已经被压扁 merge 的本地分支

标签 git github

我正在处理一个存储库的分支。
我从那个分支的分支发送 pull 请求,一旦它们被接受,它们就会将“挤压和 merge ”放入上游存储库的主分支中。
如何自动查找和删除已经被压缩和 merge 的本地分支?大多数策略显示在 other solutions 中依赖于确定是否可以在 master 的提交历史记录中找到分支中的所有提交,但是由于我的所有提交都被压缩,因此从未满足此条件。

更多信息

我的 git remote -v好像:

origin  git@github.com:sshleifer/transformers_fork.git (fetch)
origin  git@github.com:sshleifer/transformers_fork.git (push)
upstream    git@github.com:huggingface/transformers.git (fetch)
upstream    git@github.com:huggingface/transformers.git (push)

最佳答案

仅通过 git :简短的回答是你不能(不是 100% 的可靠性)。

以下是一些不可靠的探索方式:

  • 如果 master 上的提交消息包含分支名称:grep 出来;
  • 如果 master 上的提交消息包含 PR 名称:grep 出来,然后使用 Github 的 api 查找链接到此 PR 的分支;
  • 如果 master 上的提交消息包含问题编号:grep 出来,并将其与您自己的规则匹配(分支名称中的问题编号?fix #xyz 在某些提交消息中?);
  • 如果分支总是足够快地 merge ,或者在被压扁+ merge 之前重新基于 master ,您可以尝试查看分支中的内容( ^{tree} )是否与 master 上的提交内容匹配:
  • git log --first-parent --format="%T"会给你master上的树列表,
  • git rev-parse branch/name^{tree}会给你 Twig 的树 branch/name
  • 关于git - 删除所有已经被压扁 merge 的本地分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62304043/

    相关文章:

    python - Django social auth GitHub 认证

    git - 为什么 git 在每次 merge 时都运行 "git gc --auto"?

    git - 我可以通过 http "disable"git-clone 吗?

    git - merge 工具创建的 .orig 文件的预期用途是什么?

    git - Azure cli 存储库导入失败,操作返回 400 状态代码

    python - 如何使用github管理本地项目?

    git - 远程 SSH git pull 每次都会询问 id_rsa 密码

    javascript - 为什么 Github 的 GraphQL API 401 与 Axios 兼容?

    git - 较长的提交历史记录是否会导致克隆 Git 存储库的速度变慢?

    windows - 无法从 github 克隆 git 存储库