How to Make the Current Commit the Only Commit in a Git Repository
- How to make commit as an initial one in a repository
- How to make commit as an initial one in Git submodules
- Pushing Repositories
- Git Submodule
- Interactive Rebase
If you want to remove the version history from the local Git repository so that the current repository content becomes the only commit, this tutorial will help you to make the current commit as an initial one in a single repository. The case of submodules is also discussed in the topic.
How to make commit as an initial one in a repository¶
- Removing history
Firstly, remove all history but also be sure you have backup because this cannot be reverted:
cat .git/config # note <github-uri> rm -rf .git
- Reconstructing the repository
Next step is reconstructing the Git repository with only the current content:
git init git add . git commit -m "Initial commit"
- Pushing the repository
The final step left to do is pushing the repository to GitHub:
git remote add origin <github-uri> git push -u --force origin master
How to make commit as an initial one in Git submodules¶
In the case of Git Submodules, an interactive rebase can be used. For example, if your git version is 1.7.12, then run:
git rebase --root -i
In the list of commits in your editor, change pick to reword for the first commit and pick to fixup for every other commit. After doing this, Git will start the rebasing process. As a result, a new root commit is created, which is a combination of all other commits that came after it.
After the changes are made in the local repository, you can run git push to share them with other members of the team. The git pushcommand is commonly used to publish the upload local changes to the central repository. It is one of the commands that are involved in the "syncing" process. These commands work on the remote branches that are configured with the git remote command.
Git allows including other Git Repositories, which are called submodules into one repository. Submodules allow tracking changes in several repositories via one repository. Submodules are repositories that are included in the parent repository at a specific path in the working directory of the parent repository. Submodule supports adding, synchronizing, updating, and cloning submodules.
Interactive rebase is executed with the -i flag short for "interactive". The advantage of interactive rebase mode is that it changes the individual commits in the process, without having to move all the commits to the new base. Due to this mode, you can clean the history by deleting and changing the existing sequence of commits.