如何取消我最后一次提交git
我怎么能取消我最后一次提交git?
是吗
git reset --hard HEAD 要么
 git reset --hard HEAD^ 
	
 如果您不完全确定“uncommit”的含义,不知道是否要使用git reset ,请参阅“ 恢复到之前的git commit ”。 
 如果你想更好地理解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 --hard HEAD^ ,如果你想也扔掉你所做的改变。  git reset --soft HEAD^会保留修改后的工作树。 
  小心, reset --hard将删除您的本地(未提交)的修改。 
 git reset --hard HEAD^ 
注意:如果你在windows上,你需要引用HEAD ^所以
 git reset --hard "HEAD^" 
只是一个注释 – 如果你使用ZSH并看到错误
 zsh: no matches found: HEAD^ 
 你需要逃避^ 
 git reset --soft HEAD\^ 
 如果你还没有推送你的修改,请使用git reset --soft [Hash for one commit]回滚到特定的提交。  --soft告诉git保持更改被回滚( --soft文件标记为已修改)。  --hard告诉git删除正在回滚的更改。 
如果你犯了错误的分支
在错误的分支上:
-   git log -2给你2最后提交的散列,可以说$prev和$last
-   git checkout $prevcheckout correct commit
-   git checkout -b new-feature-branch分支为function创build一个新的分支
-   git cherry-pick $last为你的修改补丁一个分支
然后,你可以按照上面build议的方法从第一个分支中删除你的提交。
小心一点。
但是你可以使用rebase命令
 git rebase -i HEAD~2 
 一个vi将打开,你所要做的就是删除提交的行。 也可以阅读正确版本@ vi显示的指令,可以在这个模式下执行一些操作