Skip to content

Instantly share code, notes, and snippets.

Last active April 5, 2024 20:09
Show Gist options
  • Star 69 You must be signed in to star a gist
  • Fork 18 You must be signed in to fork a gist
  • Save zkiraly/c378a1a43d8be9c9a8f9 to your computer and use it in GitHub Desktop.
Save zkiraly/c378a1a43d8be9c9a8f9 to your computer and use it in GitHub Desktop.
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

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!

Copy link

hustc12 commented Sep 11, 2023


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