oh-my-zsh plugin for managing branches
Updating branches can be a pain, especially if you have unsaved changes in your workspace. branch-manager makes it easier to perform updates by auto-stashing your changes before doing routine maintenance, and then returning you to your workspace.
branch-manager adds the following commands to your shell:
-
update_branch [branch=current_branch]
Pullbranchand return to your workspace
You can also use this to update other branches while staying in your own -
merge_branch [branch=default_branch]
Mergebranchinto your own -
rebase_branch [branch=default_branch]
Rebasebranchinto your own -
squash_branch [base_branch|main_branch] [-m/--message=<msg>|"Squashed $current_branch"] [-b/--branch=<name>|"$current_branch--squashed"] [-f/--force]
Squash the current branch into a single commit.
You can also use this to squash in place on the current branch by using the--forceflag -
reset_branch_to_origin [branch=current_branch]
Resetbranchto the origin remote.
Reset a branch to the origin remote, while keeping your uncommitted changes -
pull_and_prune [branch=default_branch]
Pullbranchand delete all dead/merged branches.
Useful for staying up-to-date with an active remote, while keeping your local repo tidy
For commands that default to the “default branch” (e.g. master/main), the default branch is determined by checking the following in order:
git config init.defaultBranchBRANCH_MANAGER_DEFAULT_BRANCHenvironment variable- …otherwise defaults to
master
If it’s guessing wrong, the easiest way to fix it is to set the default branch per repo:
git config init.defaultBranch [your_branch_name_here]or globally:
git config --global init.defaultBranch [your_branch_name_here]branch-manager is built to work with oh-my-zsh, so you’ll need that installed first.
$ cd ~/.oh-my-zsh/custom/plugins(you may have to create the folder)$ git clone git@github.com:elstgav/branch-manager.git- In your .zshrc, add
branch-managerto your oh-my-zsh plugins:
plugins(rails git branch-manager)See CHANGELOG.