跳转到主要内容

用于删除已合并Git分支的命令行工具

项目描述

pre-commit Run the test suite Packaging status

git-delete-merged-branches

一个方便的命令行工具,帮助你保持仓库整洁。

安装

# pip install git-delete-merged-branches

如果你使用以下任何一个发行版,你可以通过相应的包管理器安装git-delete-merged-branches,例如:

发行版 命令
Arch Linux (AUR) yay -S git-delete-merged-branches
Debian GNU/Linux (>=bookworm) apt install git-delete-merged-branches
Gentoo Linux emerge -av dev-vcs/git-delete-merged-branches
Homebrew brew install git-delete-merged-branches
MacPorts port install py-git-delete-merged-branches
NixOS nix-shell -p git-delete-merged-branches
Ubuntu (>=lunar/23.04) apt install git-delete-merged-branches
Void Linux xbps-install -S git-delete-merged-branches

示例

# git-delete-merged-branches
Do you want to run "git remote update --prune" for 1 remote(s):
  - origin

Update? [y/N] y

Do you want to run "git pull --ff-only" for 1 branch(es):
  - master

Pull? [y/N] y

You are about to delete 6 local branch(es):
  - improve-setup-py
  - issue-12-enable-ci-for-pull-requests
  - issue-5-fix-waste-of-one-second-per-service
  - keep-github-actions-up-to-date
  - refactoring-one
  - simple-ci

Delete? [y/N] y

6 local branch(es) deleted.
You are about to delete 6 remote branch(es):
  - origin/improve-setup-py
  - origin/issue-12-enable-ci-for-pull-requests
  - origin/issue-5-fix-waste-of-one-second-per-service
  - origin/keep-github-actions-up-to-date
  - origin/refactoring-one
  - origin/simple-ci

Delete? [y/N] y
To github.com:hartwork/wait-for-it.git
 - [deleted]         improve-setup-py
 - [deleted]         issue-12-enable-ci-for-pull-requests
 - [deleted]         issue-5-fix-waste-of-one-second-per-service
 - [deleted]         keep-github-actions-up-to-date
 - [deleted]         refactoring-one
 - [deleted]         simple-ci

6 remote branch(es) deleted.

功能

  • 支持删除本地和远程分支
  • 检测多种事实上的合并形式(变基合并、压缩合并(需要--effort=3)、单个或范围 cherry-pick... 利用 git cherry
  • 支持具有多个发布分支的工作流程,例如,仅删除已合并到所有 masterdevstaging的分支
  • 快速交互式配置
  • 提供者无关:与GitHub、GitLab、Gitea和任何其他Git托管一起工作
  • 高度重视安全性

安全

删除是一个需要谨慎使用的锋利刀具。虽然大多数情况下 git reflog 会为你提供支持,但 git-delete-merged-branches 对安全性非常重视。

git-delete-merged-branches 为你的安全做了以下工作

  • 没有分支在没有确认或传递 --yes 的情况下被删除。
  • 确认默认为 "否";直接按下 [Enter]/[Return] 不会删除。
  • git push 使用了 --force-with-lease,因此如果服务器和你对该分支有不同的理解,它不会被删除。
  • 没有使用 os.system 或 shell 代码出错。
  • 使用 --dry-run,你可以感受到 git-delete-merged-branches 将对你的分支进行哪些更改。
  • 使用 --verbose 显示运行的所有 Git 命令。

最佳实践

当存储库是一个分支(具有上游远程和分支远程)时

  • 确保发布分支跟踪正确的远程,例如 master 可能应该跟踪原始上游的 master 而不是你分支的 master
  • 考虑保持你分支的远程 master 更新(使用 git push)。

当使用 GitHub 时

与 git-extras 中的 "git-delete-merged-branches" 名称冲突

实用工具集合 git-extras 提供了一个名为 git-delete-merged-branches 的简单 shell 脚本,当两个软件包都安装时,它会与命令 git-delete-merged-branches 竞争。

要解决这个问题,你可以

  • a) 使用 python3 -m git_delete_merged_branches 而不是 git-delete-merged-branches
  • b) 使用命令 git-dmb 而不是 git-delete-merged-branches
  • c) 通过环境变量 $PATH 控制路径解析顺序
  • d) 使用绝对路径调用 git-delete-merged-branches。你可以运行 which -a git-delete-merged-branches 来查看其位置。

支持

请报告您发现的任何错误。

喜欢这个工具吗?用星标支持它!

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

git_delete_merged_branches-7.4.1.tar.gz (41.6 kB 查看散列)

源代码

构建分发

git_delete_merged_branches-7.4.1-py3-none-any.whl (44.0 kB 查看哈希值)

上传于 Python 3

支持者