How to discard local commits in Git?

后端 未结 6 1098
忘掉有多难
忘掉有多难 2020-12-04 04:44

I\'d been working on something, and decided it was completely screwed...after having committed some of it. So I tried the following sequence:

git reset --har         


        
相关标签:
6条回答
  • 2020-12-04 05:02

    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 
    
    0 讨论(0)
  • 2020-12-04 05:03

    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
    
    0 讨论(0)
  • 2020-12-04 05:15

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

    git reset --hard HEAD^
    
    0 讨论(0)
  • 2020-12-04 05:16
    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.

    0 讨论(0)
  • 2020-12-04 05:18

    You need to run

    git fetch
    

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

    0 讨论(0)
  • 2020-12-04 05:23

    I had to do a :

    git checkout -b master
    

    as git said that it doesn't exists, because it's been wipe with the

    git -D master
    
    0 讨论(0)
提交回复
热议问题