Always, We need to remove sensitive or earlier pushed files form Git Hub public repository at some point of time, this is a quick guide how to remove files form Git hub commit history completely.
Before removing file, I would suggest backup your data, In case if anything goes wrong.
Say If you want to remove file config/oauth.yml form Git history, follow these steps.
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch config/oauth.yml" HEAD
This command will run the entire history of every branch and tag, changing any commit that involved the file config/oauth.yml, and any commits afterwards.
rm -rf .git/refs/original/ && git reflog expire --all && git gc --aggressive --prune
git filter-branch rewrites the history for you, the objects remain in your local repository until they’ve been dereferenced and garbage collected. If you are working in your main repository, you might want to force these objects to be purged.
git push --force --verbose --dry-run git push origin branch_name --force
If you need to force-push the changes to overwrite the remote repository.
Keep in mind that once you’ve pushed this code to a remote repository like GitHub and others have cloned that remote repository, you’re now in a situation where you’re rewriting history. When others try pull down your latest changes after this, they’ll get a message indicating that the the changes can’t be applied because it’s not a fast-forward.
To fix this, they’ll have to either delete their existing repository and re-clone it, or follow the instructions under “RECOVERING FROM UPSTREAM REBASE” in the git-rebase manpage.