git - discard previous commit, force push to remote

commit, git

Solution

You can't "remove" the first commit, but you can just squash the two commits you've made into a single commit.

You can accomplish this with a `git rebase -i HEAD~2`, but I personally find this process easier:

Move you branch pointer back to the first commit:

git reset --hard HEAD~

Stage the changes from the previous commit:

git merge --squash HEAD@{1}

Commit your changes, amending them into a single commit.

git commit --amend

Force-push your new single commit to the server:

git push -f

Problem

I will explain my situation first: I had one file `script` in my newly created repository. Then I did: ``` git add script git commit -m 'initial commit' git push -u origin master ``` ..but then I realized I want comment-stripped version of my `script` file, so I did: -- removed comments from my `script` using `sed` ``` git rm script git add script-no-comments ``` which git recognized as file being renamed, which is ok. ,then: ``` git commit -am 'comments removed' git push origin master ``` So now I have locally and on remote, two commits, first being file with comments, and another one without. My question is: how can I now remove that first commit locally, keeping my last version with no comments, and then I suppose I could do force-push to remote thus overwriting commits there. I am not concerned in commit `sha` changes, as no one will `pull` but me? Also would that remove that comment version for good, because I wouldn't like it to be recoverable?

Original source