如何取消本地的git提交

我的问题是我已经改变了一个文件,例如:自述文件,添加了一个新行“ 这为我的testing线 ”,并保存该文件,然后我发出以下命令

git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: README # no changes added to commit (use "git add" and/or "git commit -a") git add README git commit -a -m 'To add new line to readme' 

我没有把代码推到github上,现在我想取消这个提交。

为此我使用

  git reset --hard HEAD~1 

但是我从README文件中丢失了新添加的“ 这是我的testing行 ”。 这不应该发生。 我需要的内容在那里。 有没有办法保留内容并取消我的本地提交?

只要使用git reset而不用--hard标志:

 git reset HEAD~1 

PS:在基于Unix的系统上,您可以使用HEAD^ ,它等于HEAD~1 。 在Windows HEAD^将不起作用,因为^信号线延续。 所以你的命令提示符会问你More?

使用--soft而不是--hard flag:

 git reset --soft HEAD^ 

如果你正在进行提交(即已经在你的编辑器),你可以通过删除第一个#之上的所有行来取消它。 这将中止提交。

所以你可以删除所有行,这样提交信息是空的,然后保存文件:

它应该看起来像这样。

然后,您会收到一条消息,指出Aborting commit due to empty commit message.