【问题标题】:What is the "reset" command for a git cloned repository?git 克隆存储库的“重置”命令是什么?
【发布时间】:2012-09-22 01:35:26
【问题描述】:

我已经用

下载了一个仓库
git clone <address>

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

【问题讨论】:

    标签: git version-control repository


    【解决方案1】:

    这里有很长的解释,以便您了解发生了什么:

    假设远程调用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分支

    现在您可能想做一些稍微不同的事情...即不要丢弃您的更改,只需将它们放在另一个命名的分支上...毕竟您永远不知道何时再次需要它们

    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

    【讨论】:

    • 您还应该使用git clean -xfd 删除所有未跟踪的文件(构建产品等)
    • 前四个命令虽然正确,但过于冗长。如果您在master,只需git reset --hard origin/master 将执行与四个命令相同的操作。不过,+1 提到了创建本地分支的选项。
    • “我想丢弃所有东西,只是确保我在磁盘上拥有的只是代码库的原始远程版本” - 上面的方法似乎将不属于克隆的文件留在文件系统上,例如从configure.acautoreconf 生成的configure 脚本。把它留给 Git 来完成一个简单的任务,让它变得难以完成。
    • 有没有人觉得这应该是一个简单的命令而不是 4 个连续的命令?
    【解决方案2】:

    如果您确定要丢弃所有文件并丢失所有修改 (!),您可以这样做:

    git reset --hard origin/master
    

    这会将“master”分支的本地副本和工作副本的状态重置为您从上游(原始远程)获取的最新版本。

    注意:这里假设

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

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

    git reset --hard origin/branch1
    

    【讨论】:

      【解决方案3】:

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

      Here 是一个很好的资源,用于解释 git reset 及其不同模式(--hard、--mixed 和--soft)如何工作。

      免责声明

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

      【讨论】:

      • “我想丢弃所有东西,只是确保我在磁盘上拥有的只是代码库的原始远程版本” - 上面的方法似乎将不属于克隆的文件留在文件系统上,例如从configure.acautoreconf 生成的configure 脚本。把它留给 Git 来完成一个简单的任务,让它变得难以完成。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 2013-07-14
      • 1970-01-01
      • 2023-04-01
      • 2010-09-18
      • 1970-01-01
      相关资源
      最近更新 更多