Git: How to reset a remote Git repository to remove all commits?

GitVersion Control

Git Problem Overview


How can I reset a remote and local Git repository to remove all commits?

I would like to start fresh with the current Head as the initial commit.

Git Solutions


Solution 1 - Git

Completely reset?

  1. Delete the .git directory locally.

  2. Recreate the git repostory:

    $ cd (project-directory)
    $ git init
    $ (add some files)
    $ git add .
    $ git commit -m 'Initial commit'
    
  3. Push to remote server, overwriting. Remember you're going to mess everyone else up doing this … you better be the only client.

     $ git remote add origin <url>
     $ git push --force --set-upstream origin master
    

Solution 2 - Git

First, follow the instructions in this question to squash everything to a single commit. Then make a forced push to the remote:

$ git push origin +master

And optionally delete all other branches both locally and remotely:

$ git push origin :<branch>
$ git branch -d <branch>

Solution 3 - Git

Were I you I would do something like this:

Before doing anything please keep a copy (better safe than sorry)

git checkout master
git checkout -b temp 
git reset --hard <sha-1 of your first commit> 
git add .
git commit -m 'Squash all commits in single one'
git push origin temp

After doing that you can delete other branches.

Result: You are going to have a branch with only 2 commits.

> Use git log --oneline to see your commits in a minimalistic way and to find SHA-1 for commits!

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPriyank BoliaView Question on Stackoverflow
Solution 1 - GitLilith RiverView Answer on Stackoverflow
Solution 2 - GitR. Martinho FernandesView Answer on Stackoverflow
Solution 3 - GitKwnstantinos NikoloutsosView Answer on Stackoverflow