-
-
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 |
tfile=$(mktemp /tmp/config.XXXXXXXXX)
GITCONF=".git/config"
commitmsg=${1:-git repository initialised}
if [ -f "$GITCONF" ]; then
mv "$GITCONF" tfile
rm -rf .git
git init .
mv tfile "$GITCONF"
git add .
git commit -a -m "${commitmsg}"
git push -f
else
echo "Warning: No git config file found. Aborting.";exit;
fi
Thank you
Thanks!
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/13102849git 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
This worked perfectly for me, thanks @adeluccar
Any easy way to clear git history before a certain date? I just want to keep the relevant commits since my team started working on the project, rather than commits to a 'boilermaker' code we used
Worked for me. Thanks!
Above didn't work but the following worked with more attributes during the push.
git init git add . git commit -m 'Initial commit' git remote add origin [repo_address] git push --mirror --force
Thanks @heshanlk , the --mirror
option was what I needed!
Above didn't work but the following worked with more attributes during the push.
git init git add . git commit -m 'Initial commit' git remote add origin [repo_address] git push --mirror --force
Thanks @heshanlk , the
--mirror
option was what I needed!
See here, nice script which takes care of it all maintaining the original config which is what you want: resetting github repo
Thank you!
Great. Neat and clean. It's been very helpful.
Thank you!
Thanks!
Is it possible to delete the history from within Github? Thanks.
THANK YOU SO MUCH. YOU HAVE SAVED MY LIFE!
Is it possible to delete the history from within Github? Thanks.
Good question - GitHub is so conservative about supporting this kind of admin it sucks. There absolutely should be a way to do this within the browser - they won't to save developer resources
Is it possible to delete the history from within Github? Thanks.
Good question - GitHub is so conservative about supporting this kind of admin it sucks. There absolutely should be a way to do this within the browser - they won't to save developer resources
Interesting. Do I understand however that running this git-clearHistory we will clear it?
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
you could also use rebase or squash to clean up weird commitlogs