什么是git克隆存储库的“重置”命令?

时间:2012-10-01 07:48:06

标签: git version-control repository

我已经使用

下载了一个存储库
git clone <address>

我做了一些修改并编辑了一些文件,现在我想丢弃所有内容,只要确保我在磁盘上的内容就是代码库的原始远程版本:什么是正确的命令? / p>

3 个答案:

答案 0 :(得分:16)

这是一个很长的解释,以便您了解正在发生的事情:

假设遥控器被称为origin

git reset --hard HEAD
git checkout origin/master
git branch -D master
git checkout -b master

这是做什么的:

  1. (如果git status表示没有修改过的文件,则可选)丢弃磁盘上任何修改过的文件(这就是为什么reset --hard

  2. 签出远程主分支(注意:您将处于“分离头”状态)

  3. 删除本地master分支(丢弃所有本地更改)

  4. 将当前头部称为新master分支

  5. 现在你可能想要做一些稍微不同的事情......即不要丢弃你的变化,只要将它们放在另一个命名的分支上......毕竟你永远都不知道你什么时候再次需要它们

    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”分支和工作副本的本地副本的状态重置为从上游(原始远程)获取的最新版本。

注意:这假定

  • 您的上游存储库称为“origin”(git clone的默认值)
  • 您正在使用远程master分支
  • 的克隆

如果您在“master”以外的分支中工作,请调整命令:

git reset --hard origin/branch1

答案 2 :(得分:0)

如果你没有提交任何内容,那么git reset --hard就足够了。

Here是一个很好的资源,解释了如何使用不同的模式重置git( - hard,--mixed和--soft)。

<强>声明

git reset --hard是一种不安全的操作。它会从工作树中删除任何未经修改的更改,并且无法撤消。