Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Procedure to archive git branches.

How to prune unwanted git branches

Discover unwanted branchs


  1. Switch to the main branch, usually 'develop':

     git checkout develop
  2. Get a list of fully merged branches:

     git branch -a --merged

Prune unwanted branches


  1. Tag the unwanted branch:

     git tag archive/sprintjuly2010 sprintjuly2010
  2. Delete the branch:

     git branch -d sprintjuly2010
  3. Push the branch deletion to origin:

     git push origin :sprintjuly2010
  4. Push the new tag to origin:

     git push --tags
  5. Restore a deleted branch from a tag:

     git checkout -b sprintjuly2010 archive/sprintjuly2010
Copy link


Copy link

mwikya commented Jun 7, 2019


Copy link

kattatzu commented Jan 8, 2020

Hi, to make this process faster I created this function in my .zshrc file (or .bashrc).

function archive_branch() {
  date=$(date '+%Y-%m-%d')

  git checkout master
  git tag archive/$date-$1 $1
  git branch -D $1
  git branch -d -r origin/$1
  git push --tags
  git push origin :$1

In console runs like this:

archive_branch sprintjuly2010

This will remove the branch you want to archive and create a tag with its content in the following format:



Copy link

I made a script to prune all unwanted branches. You can check at:

Copy link

This is exactly what I needed thank you!

Copy link

Mantul, Bro!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment