Skip to content

Instantly share code, notes, and snippets.

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

How to prune unwanted git branches

Discover unwanted branchs

From http://www.darkcoding.net/software/cleaning-up-old-git-branches/

  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

From http://www.aaronwest.net/blog/index.cfm/2011/6/7/Git-Workflows-Archiving-Old-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
    
@calebickler
Copy link

Thanks!

@mwikya
Copy link

mwikya commented Jun 7, 2019

Thanks

@kattatzu
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:

archive/2020-01-08-sprintjuly2010

regards

@augustogiles
Copy link

Hi,
I made a script to prune all unwanted branches. You can check at:
https://gist.github.com/augustogiles/528176e0eac6b066195ff25e10f52849

@coder-candace
Copy link

This is exactly what I needed thank you!

@GhaniyKie
Copy link

Mantul, Bro!

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