I currently have a local Git repository, which I push to a Github repository.

The local repository has ~10 commits, and the Github repository is a synchronised duplicate of this.

What I’d like to do is remove ALL the version history from the local Git repository, so the current contents of the repository appear as the only commit (and therefore older versions of files within the repository are not stored).

I’d then like to push these changes to Github.

I have investigated Git rebase, but this appears to be more suited to removing specific versions.
Another potential solution is to delete the local repo, and create a new one – though this would probably create a lot of work!

ETA: There are specific directories / files that are untracked – if possible I would like to maintain the untracking of these files.

18 s
18

The only solution that works for me (and keeps submodules working) is

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

Deleting .git/ always causes huge issues when I have submodules.
Using git rebase --root would somehow cause conflicts for me (and take long since I had a lot of history).

Leave a Reply

Your email address will not be published. Required fields are marked *