如何取消本地的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.
。