2016-07-22 74 views
1

我犯了一个错误,所以我需要undo the last commit修复上次git 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!! 

是否相同呢?如果不是,那会有什么影响,我怎么能(我应该?)“撤销撤消”?

+1

这两种情况都会创建一个提交,但在第一种情况下,您只需重用'ORIG_HEAD'中的日志和作者信息。清楚的是,从功能上讲,两者都做出同样的承诺。如果你不想要这个提交,则恢复它或者将其复制。 –

+0

@TimBiegeleisen如果它们是相同的,并且我保持原样,那么特殊的'ORIG_HEAD'会发生什么,因为我没有使用它(并且假设我做了正确的事情,它会被删除)。换句话说,如果我将来需要再次撤销,那么这个问题的存在会成为一个问题吗? –

回答

1

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

如果你想删除ORIG_HEAD你可以用下面的命令做到这一点:

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

它不会做你让它有任何的伤害,但因为它没有好处。它可能是很好的将其删除那里。如果您要执行类似的操作,则只会被新的ORIG_HEAD覆盖。

+0

我应该删除'ORIG_HEAD'吗?如果我需要在未来某个时候再次“撤销”。 –

+0

“......它只会被覆盖......”是的,这是我的想法,但不确定。谢谢。 –