协慌网

登录 贡献 社区

如何解除我在 Git 中的最后一次提交

我如何取消承诺我在 git 中的最后一次提交?

是吗

git reset --hard HEAD

要么

git reset --hard HEAD^

答案

如果您不完全确定 “uncommit” 是什么意思,并且不知道是否要使用git reset ,请参阅 “ 恢复到之前的 Git 提交 ”。

如果你想更好地理解git reset ,请参阅 “ 你能解释一下”git reset“用简单的英语做什么吗? ”。


如果你知道你想使用git reset ,它仍然取决于你所说的 “uncommit”。如果您要做的就是撤消提交行为,保留其他所有内容,请使用:

git reset --soft HEAD^

如果你想要撤消提交行为和你上演的所有内容,但是保留工作树(你的文件完好无损):

git reset HEAD^

如果您确实要完全撤消它, 丢弃所有未提交的更改,将所有内容重置为上一次提交 (如原始问题所示):

git reset --hard HEAD^

最初的问题也问它是HEAD^不是HEADHEAD指的是当前提交 - 通常是当前签出分支的提示。 ^是一个可以附加到任何提交说明符的表示法,意思是 “之前的提交”。因此, HEAD^是当前提交之前的提交,就像master^是主分支的提示之前的提交一样。

这是git-rev-parse 文档的一部分,描述了指定提交的所有方法( ^只是许多方法中的基本方法)。

保持要撤消的提交的更改

git reset --soft HEAD^

从要撤消的提交中销毁更改

git reset --hard HEAD^

你也可以说

git reset --soft HEAD~2

回去 2 次提交。

编辑:正如 charsi 所提到的,如果您在 Windows 上,则需要将 HEAD 或哈希引用到引号中。

git reset --soft "HEAD^"
git reset --soft "asdf"

git reset --soft HEAD^将保留修改后的更改在您的工作树中。

git reset --hard HEAD^ 将会改变你所做的改变!