-
-
Save stephenhardy/5470814 to your computer and use it in GitHub Desktop.
-- 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 [email protected]:<YOUR ACCOUNT>/<YOUR REPOS>.git | |
git push -u --force origin master |
Thank you! Great coding, simple and yet extremely effective!!
Gold
This might be problematic with repositories with git submodules. I believe the recipe in this SO answer is a safer way: https://stackoverflow.com/a/13102849
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
Fantastic!
For automation it is better not to use the editor:
git commit -m 'Clear history'
git commit
Will probably need to do git commit -m "some message"
instead, to avoid an error.
thanks you so much
Works fine for me. I had a customer who never finished paying me for work, so nuked the code in the remote repo and added my ransom to the README.
... git push --mirror --force
Thank you, @heshanlk.
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
Thanks.
❤️
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
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
worked like charm
Interesting. Do I understand however that running this git-clearHistory we will clear it?