git reset - 如何丢弃Git中的本地提交?

我一直在做一些事情,并决定完全搞砸了......在完成了一些事情之后。 所以我尝试了以下顺序:

git reset --hard
git rebase origin
git fetch
git pull
git checkout

在那时我得到了消息

Your branch is ahead of 'origin/master' by 2 commits.

我想丢弃我的本地提交,而不必删除我的本地目录并重新下载所有内容。 我怎么能做到这一点?

Daniel C. Sobral asked 2019-03-22T08:17:58Z
6个解决方案
438 votes
git reset --hard origin/master

将删除不在origin/master中的所有提交,其中origin是回购名称,master是分支的名称。

mipadi answered 2019-03-22T08:18:09Z
26 votes

顺便说一下,除了mipadi的答案(顺便说一下应该是这样),你应该知道:

git branch -D master
git checkout master

如果没有having to redownload everything(你的报价转述)也会做你想要的。 这是因为您的本地仓库包含远程仓库的副本(并且该副本与您的本地目录不同,它与您签出的分支甚至不同)。

擦除分支是非常安全的,并且重建该分支非常快并且不涉及网络流量。 请记住,git主要是设计的本地回购。 即使是远程分支机构也有本地副本。 只有一些元数据告诉git特定的本地副本实际上是一个远程分支。 在git中,所有文件都在您的硬盘上。

如果您没有主人以外的任何分支机构,您应该:

git checkout -b 'temp'
git branch -D master
git checkout master
git branch -D temp
slebetman answered 2019-03-22T08:18:57Z
8 votes

我所做的就是努力重置HEAD。 这将消除所有本地提交:

git reset --hard HEAD^
giang nguyen answered 2019-03-22T08:19:22Z
3 votes

你需要跑

git fetch

要获得所有更改,您将不会收到“您的分支在前方”的消息。

Володимир Пасіка answered 2019-03-22T08:19:55Z
0 votes

我见过远程变得不同步且需要更新的实例。 如果reset --hardbranch -D无效,请尝试

git pull origin
git reset --hard 
Jim Clouse answered 2019-03-22T08:20:21Z
0 votes

我不得不这样做:

git checkout -b master

正如git所说,它不存在,因为它已被擦拭了

git -D master
ramp answered 2019-03-22T08:20:54Z
translate from https://stackoverflow.com:/questions/3882583/how-to-discard-local-commits-in-git