【问题标题】:"git reset --hard" command and "git clean -f" not setting staging area like most recent commit“git reset --hard”命令和“git clean -f”没有像最近的提交那样设置暂存区
【发布时间】:2014-04-26 07:46:35
【问题描述】:

我克隆了一个存储库,玩弄了一下,(哎呀)弄乱了我的代码。现在我只想恢复到存储库代码的干净克隆并重新开始。

我尝试从工作目录的终端使用以下内容:

git reset --hard      # deletes watched filed in local working directory and staged area
git clean -n          # shows what will be deleted without actually deleting anything (for the faint of heart)
git clean -f          # deletes unwatched files

但是,当我运行git status 时,它仍然显示杂乱无章的文件。

是否有推荐的方法将您的机器重置为最新的签到?

【问题讨论】:

    标签: git reset revert


    【解决方案1】:

    git clean -n 仅对git clean 进行“试运行”以向您展示它将删除的内容,它实际上并没有删除任何内容。您可以运行以下命令序列来清理工作副本和暂存区/索引:

    git reset -- .    # Clear the index/staging area
    git checkout -- . # Revert changes in your working copy
    git clean -df     # Recursively delete untracked files.
    

    如果你愿意,你甚至可以把它们变成一个 git 别名:

    # Make the alias
    git config --global alias.undo \
    "!git reset -- . ; git checkout -- . ; git clean -df; git status"
    
    # Usage
    git undo
    

    【讨论】:

      【解决方案2】:

      没关系,我使用了sudo git reset --hard,在输入密码后,它会将我的本地存储库历史清除为已知状态!虽然,我不知道 git 别名。太好了,我一定会用的!

      【讨论】:

      • 实际上这取决于您在您正在工作的服务器上的设置,但我明白您的意思。有一些方法可以避免输入密码并使用带有 *.pem 文件的 ssh 连接。但是,我使用的机器要求我在当前状态下使用 sudo。大多数人不需要使用 sudo。
      猜你喜欢
      • 2015-08-26
      • 2018-01-13
      • 2011-09-06
      • 2018-05-30
      • 1970-01-01
      • 2018-09-21
      • 2011-02-02
      • 2015-12-03
      • 2015-11-20
      相关资源
      最近更新 更多