Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@stephenhardy
Created April 26, 2013 22:14
Show Gist options
  • Save stephenhardy/5470814 to your computer and use it in GitHub Desktop.
Save stephenhardy/5470814 to your computer and use it in GitHub Desktop.
Steps to clear out the history of a git/github repository
-- Remove the history from
rm -rf .git
-- recreate the repos from the current content only
git init
git add .
git commit -m "Initial commit"
-- push to the github remote repos ensuring you overwrite history
git remote add origin git@github.com:<YOUR ACCOUNT>/<YOUR REPOS>.git
git push -u --force origin master
@mchapman87501
Copy link

...
git push --mirror --force

Thank you, @heshanlk.

@lzkill
Copy link

lzkill commented Dec 20, 2021

Adding a variable to capture the default branch name (it might be master or main):

#!/bin/bash

default_branch=`basename $(git symbolic-ref --short refs/remotes/origin/HEAD)`

git checkout --orphan tmp
git add -A				# Add all files and commit them
git commit
git branch -D $default_branch		# Deletes the default branch
git branch -m $default_branch		# Rename the current branch to default
git push -f origin $default_branch	# Force push default branch to github
git gc --aggressive --prune=all		# remove the old files

@jrson83
Copy link

jrson83 commented Dec 27, 2021

Thanks.

@graciofilipe
Copy link

❤️

@FossPrime
Copy link

Save yourself a world of pain and use main as default branch... blame Github monopoly for causing this chaos.
In git 2.23 / replit's default / NixOS 22_05 default, use the following, as it has no concept of default branch:

git branch main
git checkout main
git branch -d master

@Code-Case
Copy link

Code-Case commented Nov 22, 2022

Using just a branch isnt a good concept for branching.

Its always depends about how your workflow looks like and then learn how to branch.

Best regards

@samih-sghier
Copy link

worked like charm

@Yamuka12
Copy link

Above didn't work but the following worked with more attributes during the push.

git init
git add .
git commit -m 'Initial commit'
git remote add origin [repo_address]
git push --mirror --force

Thanks @heshanlk , the --mirror option was what I needed!

See here, nice script which takes care of it all maintaining the original config which is what you want: resetting github repo

Reset

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