我一直在做一些事情,并且决定将它完全搞砸了......在完成了一些事情之后。所以我尝试了以下顺序:
git reset --hard
git rebase origin
git fetch
git pull
git checkout
此时我收到了消息
Your branch is ahead of 'origin/master' by 2 commits.
我想丢弃我的本地提交,而不必删除我的本地目录并重新下载所有内容。我怎么能做到这一点?
答案 0 :(得分:482)
git reset --hard origin/master
将删除origin/master
以外的所有提交,其中origin
是回购名称,master
是分支的名称。
答案 1 :(得分:27)
顺便说一下,除了mipadi的答案(顺便说一句应该是这样),你应该知道这样做:
git branch -D master
git checkout master
也可以在没有having to redownload everything
的情况下完成你想做的事情(你的引用解释)。这是因为您的本地仓库包含远程仓库的副本(并且该副本与您的本地目录不同,它甚至与您签出的分支不同)。
擦除分支是非常安全的,并且重建该分支非常快并且不涉及网络流量。请记住,git主要是设计的本地回购。即使是远程分支机构也有本地副本。只有一些元数据告诉git特定的本地副本实际上是一个远程分支。在git中,所有文件都在你的硬盘上。
如果您没有master以外的任何分支,您应该:
git checkout -b 'temp'
git branch -D master
git checkout master
git branch -D temp
答案 2 :(得分:11)
我做的是尝试重置为HEAD。这将消除所有本地提交:
git reset --hard HEAD^
答案 3 :(得分:3)
你需要运行
git fetch
要获得所有更改,然后您将不会收到“您的分支已提前”的消息。
答案 4 :(得分:0)
我见过遥控器不同步且需要更新的情况。如果reset --hard
或branch -D
无效,请尝试
git pull origin
git reset --hard
答案 5 :(得分:0)
我必须做一个:
git checkout -b master
因为git说它不存在,因为它已被
擦除git -D master