【问题标题】:Fixing a fixing of last git commit修复最后一次 git 提交的修复
【发布时间】:2016-11-25 23:55:42
【问题描述】:

我犯了一个错误,所以我需要undo the last commit

通常的步骤是:

git reset --soft HEAD~
// make changes...
git commit -c ORIG_HEAD

但我是无意中这样做的:

git reset --soft HEAD~
// make changes...
git commit -m "Some new message"     // <-- shouldn't have done this!!

是等价的吗?如果没有,有什么影响,我怎么能(我应该?)“撤消撤消”?

【问题讨论】:

  • 您的两种方案都会创建一个提交,但在第一种情况下,您只需重用来自ORIG_HEAD 的日志和作者信息。需要明确的是,从功能上讲,两者都进行了相同的提交。如果您不想要该提交,请将其还原或核对它。
  • @TimBiegeleisen 如果它们是相同的,并且我保持原样,那么那个特殊的ORIG_HEAD 会发生什么,因为我没有使用它(我假设如果我做得正确,它会被删除)。或者换一种说法,如果我以后需要再次撤消,那会是一个问题吗?

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


【解决方案1】:

您的方式与原始论坛帖子中描述的方式之间的区别在于您使用新的作者和信息创建了一个新的提交。但是由于您是老提交者,如果您也不更改消息,这一切都不会改变。

如果要删除 ORIG_HEAD,可以使用以下命令:

rm -f $GIT_DIR/ORIG_HEAD
# or
rm -f .git/ORIG_HEAD

把它放在那里不会对你造成任何伤害,但删除它可能会很好,因为它在那里没有用。如果您要执行类似的操作,它只会被新的 ORIG_HEAD 覆盖。

【讨论】:

  • 我应该以某种方式删除ORIG_HEAD吗?以防我将来需要再次“撤消”。
  • "...它只会被覆盖..." 是的,这就是我的想法,但不确定。谢谢。
猜你喜欢
  • 2021-06-08
  • 1970-01-01
  • 2011-07-12
  • 2018-01-24
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 2012-01-02
相关资源
最近更新 更多