此问题已在此处有答案:
How do I undo the most recent local commits in Git?(105答案)
6年前关闭。
如何在git中取消提交我的最后一次提交?
是吗
git reset --hard HEAD
或
git reset --hard HEAD^
?
此问题已在此处有答案:
How do I undo the most recent local commits in Git?(105答案)
6年前关闭。
如何在git中取消提交我的最后一次提交?
是吗
git reset --hard HEAD
或
git reset --hard HEAD^
?
8条答案
按热度按时间bgibtngc1#
如果你不完全确定“uncommit”是什么意思,也不知道是否要使用
git reset
,请参阅“Revert to a previous Git commit”。如果您想更好地理解
git reset
,请参阅“Can you explain what "git reset" does in plain English?”。如果你知道你想使用
git reset
,它仍然取决于你所指的“uncommit”。如果你想做的只是撤销提交的行为,而不改变其他所有内容,那么用途:如果你想撤销提交的行为和你暂存的所有东西,但保持工作树(你的文件)不变:
如果你真的想 * 完全 * 撤销它,丢弃所有未提交的更改,将所有内容重置为上一次提交(正如最初的问题所问的那样):
原来的问题也问它是
HEAD^
而不是HEAD
。HEAD
指的是当前提交-通常是当前 checkout 分支的顶端。^
是一个可以附加到 any commit说明符的符号,意思是“之前的提交”。因此,HEAD^
是当前提交之前的提交,就像master^
是master分支尖端之前的提交一样。下面是git-rev-parse documentation的一部分,描述了所有指定提交的方法(
^
只是许多方法中的一种)。hmae6n7t2#
git reset --soft HEAD^
将在工作树中保留修改后的更改。git reset --hard HEAD^
将放弃您所做的更改!!!bpzcxfmw3#
保留要撤消的提交中的更改
销毁要撤消的提交中的更改
你也可以说
返回2提交。
编辑:正如Charsi提到的,如果你在Windows上,你需要把HEAD或提交哈希放在引号里。
nkkqxpd94#
如果你想恢复提交 * 而不 * 丢弃工作,使用--soft标志而不是--hard
小心!
reset --hard
也会删除你的本地(未提交)修改。注意:如果你是在Windows上,你需要引用HEAD^所以
q3aa05255#
只是一个注意-如果您使用ZSH并看到错误
你需要逃离
^
wvmv3b1j6#
如果提交到错误的分支
在错误的分支上:
git log -2
给出了最近2次提交的哈希值,比如$prev
和$last
git checkout $prev
检出正确提交git checkout -b new-feature-branch
为要素创建新分支git cherry-pick $last
使用您的更改修补分支然后你可以按照上面建议的方法之一从第一个分支中删除你的提交。
sg2wtvxw7#
如果你还没有推送你的修改,使用
git reset --soft [Hash for one commit]
回滚到一个特定的提交。--soft
告诉git保留回滚的更改(即,将文件标记为已修改)。--hard
告诉git删除正在回滚的更改。vdzxcuhz8#
小心点
但是可以使用rebase命令
一个
vi
将打开,你所要做的就是删除提交的那一行。还可以阅读正确版本@vi
中显示的说明。在此模式下可以执行几项操作。