我已经使用
下载了一个存储库git clone <address>
我做了一些修改并编辑了一些文件,现在我想丢弃所有内容,只要确保我在磁盘上的内容就是代码库的原始远程版本:什么是正确的命令? / p>
答案 0 :(得分:16)
这是一个很长的解释,以便您了解正在发生的事情:
假设遥控器被称为origin
git reset --hard HEAD
git checkout origin/master
git branch -D master
git checkout -b master
这是做什么的:
(如果git status表示没有修改过的文件,则可选)丢弃磁盘上任何修改过的文件(这就是为什么reset --hard
)
签出远程主分支(注意:您将处于“分离头”状态)
删除本地master
分支(丢弃所有本地更改)
将当前头部称为新master
分支
现在你可能想要做一些稍微不同的事情......即不要丢弃你的变化,只要将它们放在另一个命名的分支上......毕竟你永远都不知道你什么时候再次需要它们
git checkout -b my-silly-changes
git branch -D master
git checkout -b master origin/master
将当前更改保存在名为my-silly-changes
的新本地分支中,然后删除名为master
的旧本地分支,最后从远程头部重新创建它。
以下是那些认为自己知道自己在做什么的人的解释:
单一命令:
git reset --hard origin/master
将丢弃所有本地更改,并将当前分支重新指向最近获取的origin/master
状态。这与本答案开头的四个命令完全相同,但没有looking behind the curtain
答案 1 :(得分:1)
如果您确定要放弃所有文件,丢失所有修改(!),您可以执行以下操作:
git reset --hard origin/master
这会将“master”分支和工作副本的本地副本的状态重置为从上游(原始远程)获取的最新版本。
注意:这假定
git clone
的默认值)master
分支如果您在“master”以外的分支中工作,请调整命令:
git reset --hard origin/branch1
答案 2 :(得分:0)
如果你没有提交任何内容,那么git reset --hard
就足够了。
Here是一个很好的资源,解释了如何使用不同的模式重置git( - hard,--mixed和--soft)。
<强>声明强>:
git reset --hard
是一种不安全的操作。它会从工作树中删除任何未经修改的更改,并且无法撤消。