【问题标题】:git revert HEAD when I have a local commit当我有本地提交时 git revert HEAD
【发布时间】:2015-07-29 14:54:46
【问题描述】:

当我有一个本地提交(即我还没有推送到远程存储库的提交)我想要恢复时,如果我执行以下命令会发生什么?

git revert HEAD

我研究了很多,发现-

  • “git revert $id”用于恢复在特定提交提交 ID - $id 中所做的更改,并且
  • HEAD 本身只不过是对提交 ID 的引用(属于 最新提交)。

但我无法理解在这种情况下(当我有本地提交时),HEAD 会指向我最近的本地提交,还是远程存储库上的最新提交?

我为什么要问这个?

  • 我尝试从我的分支“git pull”,但它不会像我一样发生 我本地的一些变化。
  • 所以,我执行了“git commit”,然后尝试了“git pull”。
  • 现在,“git pull”给了我错误(可能是合并冲突:我 碰巧错过了“错误”的细节),所以我 决定恢复我的提交,为此我执行了“git revert 头”。
  • 现在我很困惑,这个命令 (git revert HEAD) 只恢复我在 我之前提到的(本地)提交?或远程上的最后一次提交 存储库?

【问题讨论】:

  • HEAD 表示当前签出的提交(所以它肯定是本地提交,它可能也是远程提交)。 git revert <commit> 将创建一个“镜像提交”,并切换每个添加和删除的行。由于您尝试拉取并遇到合并冲突,因此您可能正在合并中,需要先解决/中止它。

标签: git git-revert


【解决方案1】:

您可以使用git reset command
请注意,您将丢失当前工作区中的所有更改(如果有)。

$ git reset --hard HEAD~1

另外,this post 有助于了解恢复和重置之间的区别。

【讨论】:

  • 是的,我意识到这是我应该做的最好的方式。但是现在,我已经运行了“git revert HEAD”,我一团糟。有没有办法恢复这个命令?只是为了了解一下,您认为在我上面解释的场景中哪个提交会被还原?
  • @AkshitSingla, git reset --hard HEAD~1 将删除 1 个提交。 git revert 提交了 1 次。所以你想丢弃两个提交,对吧?查看 git log 以确保然后丢弃正确数量的提交。
  • 听起来不错!只是为了确认-希望即使我已经推送了更改也能正常工作,对吧?
猜你喜欢
  • 2017-07-09
  • 2014-03-03
  • 2019-09-05
  • 2013-12-12
  • 1970-01-01
  • 2020-06-15
  • 2018-06-17
  • 2012-04-28
  • 2011-06-30
相关资源
最近更新 更多