我如何取消承诺我在 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^
不是HEAD
。 HEAD
指的是当前提交 - 通常是当前签出分支的提示。 ^
是一个可以附加到任何提交说明符的表示法,意思是 “之前的提交”。因此, 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^
将会改变你所做的改变!