【问题标题】:How to revert working stage to last commit in git?如何将工作阶段恢复到 git 中的最后一次提交?
【发布时间】:2012-10-04 00:17:44
【问题描述】:

我在工作阶段编辑了一些文件(没有用git add -A添加它们。没有承诺)。

现在我想将更改恢复到本地分支中的最后一次提交。

要做什么?

我已经搜索了一下,发现:

git rebase -i HEAD

然后我得到:

Cannot rebase: You have unstaged changes.
Please commit or stash them.

那么正确的方法是什么?

【问题讨论】:

标签: git


【解决方案1】:

您可以通过以下方式丢弃所有未提交的更改:

git reset --hard

警告:这确实会删除所有暂存的或仅在工作树中的更改,并返回到上次提交的状态,因此请谨慎使用。

如果您可能希望再次恢复本地更改,并且只是想暂时将它们排除在外(例如,处理其他事情),您可以这样做:

git stash

...改为

【讨论】:

  • “git checkout -f branch”会做同样的事情吗?
  • 感谢第一个为我工作 :) - 我会记住第二个
  • @ManjunathManohar: git checkout . 略有不同 - 它会从索引中恢复所有内容,因此将保留任何分阶段的更改
  • @MarkLongair 你需要做的步骤, git reset HEAD 。然后是 git checkout 。
【解决方案2】:

git stash

您可以将您当前的工作状态存储到存储中,并且稍后可以访问这些文件。在你“隐藏”之后,你应该会自动进入你的最后一次提交。

【讨论】:

    【解决方案3】:

    现在您已经了解了,我强烈建议您阅读这篇文章,并永远理解它。 http://git-scm.com/2011/07/11/reset.html

    【讨论】:

      【解决方案4】:

      如果您不想保留这些更改,那么

      git reset --hard
      

      或者如果你想保留它们

      git reset --soft
      

      如果你想保存,那么你可以使用它们的字母

      git stash
      

      将后者应用于

      git stash --apply stash@{number}
      

      【讨论】:

      • 还要注意非常简单的git stash pop 应用最新的存储。
      【解决方案5】:

      只需执行以下命令。它将删除您的更改

      git reset HEAD .
      git checkout .
      

      【讨论】:

        猜你喜欢
        • 2011-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-16
        • 2021-11-19
        • 1970-01-01
        • 2011-10-01
        • 2012-04-08
        相关资源
        最近更新 更多