协慌网

登录 贡献 社区

如何取消本地 git commit

我的问题是我更改了一个文件,例如:README,添加了新行 “ this for my test line ” 并保存了文件,然后发出了以下命令

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 文件中丢失了新添加的行 “ this for my test line”。这不应该发生。我需要那里的内容。有没有办法保留内容并取消我的本地提交?

答案

只需使用不带--hard标志的git reset

git reset HEAD~1

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

使用--soft代替--hard标志:

git reset --soft HEAD^

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

因此,您可以删除所有行,以使提交消息为空,然后保存文件:

它应该看起来像这样。

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