I've been stuck all day on this issue, looking for an answer here :( ...
Context
I'm working alone on a project and I used github until now to save my work other than on my computer. Unfortunately, I added a very large file to the local repository : 300mb (which exceed Github's limit).
What I did
I will try to make an history of what I made :
I (dumbly) added everything to the index :
git add *
I committed changes :
git commit -m "Blablabla"
I tried to push to origin master
git push origin master
It took a while, so I just CTRL+C, and repeated step 2 and 3 four times, until I realised that a file was too large to be pushed to github.
I made the terrible mistake to delete my large file (I don't remember if I did a git rm or a simple rm)
I followed the instructions on (https://help.github.com/articles/remove-sensitive-data)
When I try to git filter branch, I get the following error : "Cannot rewrite branches: You have unstaged changes."
Thanks in advance !
If the large file was added in the most recent commit, you can just run: git rm --cached <filename> to remove the large file, then. git commit --amend -C HEAD to edit the commit.
If your excess commits are only visible to you, you can just do git reset --hard origin/<branch_name> to move back to where the origin is. This will reset the state of the repository to the previous commit, and it will discard all local changes.
Deleting the "Middle" Commit from the History. All you need to do is typing "drop" at the beginning of each commit you want to delete. Be careful while using the git rebase command, as it may cause sudden problems. So, it is more recommended to use the git revert command.
Do git reset HEAD^
for as many commits you want to undo, it will keep your changes and your actual state of your files, just flushing the commits of them.
Once the commits are undone, you can then think about how to re-commit your files in a better way, e.g.: removing/ignoring the huge files and then adding what you want and then committing again. Or use Git LFS to track those huge files.
Edit: this answer is also acceptable if for instance your commits needed authentication (e.g.: username and email) and that you need to add the proper credentials after having commited. You can undo things the same way.
Question: would someone have a way to just cherrypick the commit that is bad and change it directly? I'm asking especially in the case of someone who would just need to re-authenthify his commits like in here, but in a case where the files needs not to be changed. Only commits to authentify.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With