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.
Best Answer
Here's the brute-force approach. It also removes the configuration of the repository.
Note: This does NOT work if the repository has submodules! If you are using submodules, you should use e.g. interactive rebase
Step 1: remove all history (Make sure you have a backup, this cannot be reverted)
Step 2: reconstruct the Git repo with only the current content
Before step 2 if you have not set up
init.defaultBranch
configuration then, please do it viagit config --global init.defaultBranch <branch-name>
you may choosemain
as<branch-name>
in the current exampleStep 3: push to GitHub.