【问题标题】:How to undo the last commit in git [duplicate]如何撤消git中的最后一次提交[重复]
【发布时间】:2016-09-22 02:01:22
【问题描述】:

错误地,我在develop 分支中做了git add .git commit。但幸运的是,我没有做git push

所以我想把它恢复到原来的状态。

我尝试了git reset --softgit reset HEAD --hard,但看起来我搞砸了。

我该如何解决这个问题?我想回到原始状态并可能保留代码更改。

【问题讨论】:

    标签: git git-commit git-reset git-revert


    【解决方案1】:

    我想你还没有搞砸。试试:

    git reset HEAD^
    

    这将使目录在您提交之前处于状态,HEAD^ 表示当前提交的父级(您不再需要的那个),同时保留对它的更改(未暂存)。

    【讨论】:

    • 这可能是重复的,但这是我 90% 的时间想要的过于简单的答案。谢谢
    • 执行此操作后,如果要完全删除未暂存的更改,则需要运行以下命令: git reset --hard HEAD
    • 不知道为什么这个答案被标记为正确。我收到错误抛出 fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, 不起作用
    • @Green 对我来说也一样。我使用这个命令来完全删除最后一次提交:git reset --hard HEAD~1Found here
    • 在 windows 上,插入符号是 CMD 的特殊字符(用于转义字符,类似于 Linux 中的反斜杠),因此您最好引用“HEAD^”。
    【解决方案2】:

    尝试使用--soft 标志简单地重置上次提交

    git reset --soft HEAD~1
    

    注意

    对于 Windows,将 HEAD 部分用引号括起来,例如 git reset --soft "HEAD~1"

    【讨论】:

    • fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree. Use '--' to separate paths from revisions
    • 尝试使用 git bash。如果您使用的是 Windows,则控制台由于某种原因无法工作,不知道为什么。 Git bash 确实如此。
    • @Green Windows 不喜欢HEAD~1,将其用引号括起来,例如git reset --soft "HEAD~1"
    猜你喜欢
    • 2011-02-20
    • 2014-06-05
    • 2013-07-03
    • 2021-12-26
    • 2020-12-11
    • 2020-08-26
    • 2011-10-01
    • 2013-10-18
    • 2016-10-24
    相关资源
    最近更新 更多