git reset - How to discard local commits in Git?

ID : 10327

viewed : 42

Tags : gitgit-resetgit

Top 5 Answer for git reset - How to discard local commits in Git?

vote vote

98

git reset --hard origin/master 

will remove all commits not in origin/master where origin is the repo name and master is the name of the branch.

vote vote

82

As an aside, apart from the answer by mipadi (which should work by the way), you should know that doing:

git branch -D master git checkout master 

also does exactly what you want without having to redownload everything (your quote paraphrased). That is because your local repo contains a copy of the remote repo (and that copy is not the same as your local directory, it is not even the same as your checked out branch).

Wiping out a branch is perfectly safe and reconstructing that branch is very fast and involves no network traffic. Remember, git is primarily a local repo by design. Even remote branches have a copy on the local. There's only a bit of metadata that tells git that a specific local copy is actually a remote branch. In git, all files are on your hard disk all the time.

If you don't have any branches other than master, you should:

git checkout -b 'temp' git branch -D master git checkout master git branch -D temp 
vote vote

74

What I do is I try to reset hard to HEAD. This will wipe out all the local commits:

git reset --hard HEAD^ 
vote vote

63

You need to run

git fetch 

To get all changes and then you will not receive message with "your branch is ahead".

vote vote

60

I have seen instances where the remote became out of sync and needed to be updated. If a reset --hard or a branch -D fail to work, try

git pull origin git reset --hard  

Top 3 video Explaining git reset - How to discard local commits in Git?

Related QUESTION?