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
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
,dev
andstaging
- 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 push
is used with--force-with-lease
so if the server and you have a different understanding of that branch, it is not deleted.- There is no use of
os.system
or shell code to go wrong. - With
--dry-run
you can get a feel for the changes thatgit-delete-merged-branches
would 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.
master
should probably track original upstream'smaster
rather thanmaster
of your fork. - Consider keeping your fork's remote
master
up to date (usinggit push
).
When using GitHub:
- You can make GitHub
delete branches of merged pull requests
for you, to save
git-delete-merged-branches
some 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_branches
instead ofgit-delete-merged-branches
- b) Invoke command
git-dmb
instead ofgit-delete-merged-branches
- c) Control path resolution order through environment variable
$PATH
- d) Invoke
git-delete-merged-branches
with its absolute path. You can runwhich -a git-delete-merged-branches
to 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
Hashes for git-delete-merged-branches-6.2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e27c2ed97dd8761be1c27d9f5392bd8168c8cfa62ebab37cd9e75ff1b74ba376 |
|
MD5 | 409b6cdb092a9348da95c8e8bc83c2a7 |
|
BLAKE2b-256 | 48cdabd720dbee43cac403c2c032865008b7a411bd80822b6de701191c313cb9 |
Hashes for git_delete_merged_branches-6.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3b314963b1c40f428f92a507b122c5bb811dcd4f901df41e34d07a29ae98197 |
|
MD5 | d67f17f2a0cf6b22f911fa8031dd29cb |
|
BLAKE2b-256 | d1d763f7e6fbc740860592a5fa5e6ae67605230a2838cfb8a6d91541ea485ccf |