Command-line tool to delete merged Git branches
Project description
git-delete-merged-branches
A convenient command-line tool helping you keep repositories clean.
Installation
# pip install git-delete-merged-branches
If you are using one of the distributions below, you can install
git-delete-merged-branches through the respective package manager, e.g.:
| Distribution | Command |
|---|---|
| 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 |
Example
# 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.
Features
- Supports deletion of both local and remote branches
- Detects multiple forms of de-facto merges
(rebase merges,
squash merges (needs
--effort=3), single or range cherry-picks… leveraginggit cherry) - Supports workflows with multiple release branches, e.g. only delete branches that have been merged to all of
master,devandstaging - Quick interactive configuration
- Provider agnostic: Works with GitHub, GitLab, Gitea and any other Git hosting
- Takes safety seriously
Safety
Deletion is a sharp knife that requires care.
While git reflog would have your back in most cases,
git-delete-merged-branches takes safety seriously.
Here's what git-delete-merged-branches does for your safety:
- No branches are deleted without confirmation or passing
--yes. - Confirmation defaults to "no"; plain
[Enter]/[Return]does not delete. git pushis used with--force-with-leaseso if the server and you have a different understanding of that branch, it is not deleted.- There is no use of
os.systemor shell code to go wrong. - With
--dry-runyou can get a feel for the changes thatgit-delete-merged-brancheswould be making to your branches. - Show any Git commands run using
--verbose.
Best Practices
When the repository is a fork (with an upstream remote and a fork remote):
- Make sure that release branches are tracking the right remote,
e.g.
mastershould probably track original upstream'smasterrather thanmasterof your fork. - Consider keeping your fork's remote
masterup to date (usinggit push).
When using GitHub:
- You can make GitHub
delete branches of merged pull requests
for you, to save
git-delete-merged-branchessome work on the remote side, if you like.
Name clash on "git-delete-merged-branches" with git-extras
Utility collection git-extras provides a
simple shell script named git-delete-merged-branches
that competes for command git-delete-merged-branches when both software packages are installed.
To address this conflict you can:
- a) Invoke
python3 -m git_delete_merged_branchesinstead ofgit-delete-merged-branches - b) Invoke command
git-dmbinstead ofgit-delete-merged-branches - c) Control path resolution order through environment variable
$PATH - d) Invoke
git-delete-merged-brancheswith its absolute path. You can runwhich -a git-delete-merged-branchesto see where it's located.
Support
Please report any bugs that you find.
Like this tool? Support it with a star!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file git_delete_merged_branches-7.5.1.tar.gz.
File metadata
- Download URL: git_delete_merged_branches-7.5.1.tar.gz
- Upload date:
- Size: 39.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21267a68bbf8ca1e0d3ee1459bd3313ff131f64286a41eb779e29ed59a484357
|
|
| MD5 |
1a6276071d98da2237189375d2435dd5
|
|
| BLAKE2b-256 |
3bff6a77b81229197319b38e8c3727dfb9b7f16162ca82d93c828cf17e979118
|
File details
Details for the file git_delete_merged_branches-7.5.1-py3-none-any.whl.
File metadata
- Download URL: git_delete_merged_branches-7.5.1-py3-none-any.whl
- Upload date:
- Size: 44.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9791ba838b14de50cf10c30eff09c369b707365898dc550c339e8ccc623e5a23
|
|
| MD5 |
47ff027dba1fda5d8b3ddbe2fa2c7bd8
|
|
| BLAKE2b-256 |
b770b364463190f217c4302988c7413626c95f4ba676431fdbb45b5c64afe5f6
|