【问题标题】:How to go back to the previous git commit after pushing it [duplicate]推送后如何返回上一个git commit [重复]
【发布时间】:2021-09-25 11:19:09
【问题描述】:

早上我做了一个提交并将它推送到主分支,它被合并了,因为它只是一个小改动。

但后来我完全搞砸了整个项目。现在我想回到我早上所做的最后一次提交,我不希望我的新更改被隐藏或其他东西。我只想把我的代码放到我做的最后一次提交中。

我用的是android studio 的git 终端,和普通的git 终端基本一样。

【问题讨论】:

  • 它是一个私人项目,还是有其他人正在从中撤出并且可能已经撤出了错误的修订版?
  • 它是私有的,我在自己的本地分支中进行了更改,但我还没有提交或将它们添加到 git,
  • 以及未提交的更改,您想保存它们以备后用吗?比如,你不想失去它们?
  • 我不想要它们,我只想回到我早上做的最后一次提交
  • git reset --hard <commit hash>。 确定你想这样做。

标签: git version-control gitlab


【解决方案1】:

这是一个很好的解释问题:How do I revert a Git repository to a previous commit?

或者,您可以使用 git revert HEAD 或 git reset。我会去 git revert 。这是一个回滚更改的命令,但不像普通的 git reset。它不会删除最新的提交,但会确定如何撤消上次提交的更改。 git revert 需要一个提交引用。当您使用引用 HEAD 时,最新的提交将被撤消。

就像我说的,也可以使用 git reset : git 重置 [] []

This form resets the current branch head to <commit> and possibly updates the index (resetting it to the tree of <commit>) and the working tree depending on <mode>. If <mode> is omitted, defaults to --mixed. The <mode> must be one of the following:

(https://git-scm.com/docs/git-reset)

【讨论】:

  • revert is for weaklings。 XD 不是真的。这是一个很好的替代方法。唯一让我宁愿回到过去也不愿回到过去的是,这是一个私人项目/分支。比如说,如果你是唯一一个看到过的东西,那么在分支中保留错误有什么意义呢?如果它是一个有问题的分支并且人们已经在使用被破坏的工作,那么......你仍然可以重置 --hard 但它会很痛苦,所以最好是值得的。在这种情况下(公共分支,人们已经在使用它)我更倾向于恢复。但是私人的东西? reset --hard 是关键
【解决方案2】:

如果它是一个私人项目,你可以简单地回顾历史(如果你从未提交过那件事)。这可以通过git reset --hard some-revision 轻松完成。提供要返回到的修订版的 ID,以及它将从分支中删除后的修订版。 小心:这会消除您在工作树中可能未提交的任何更改。

最后,如果您将错误的修订推送到远程分支,您将不得不强制推送到远程以将其设置为旧修订:

git push -f some-remote some-branch

就是这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 2010-12-09
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    相关资源
    最近更新 更多