如何在进行本地提交后再次取消我的文件?
我已经完成了以下命令
git add <foo.java> git commit -m "add the foo java"
我如何删除我的本地提交,并使foo.java处于非分离状态?
如果我inputgit reset --hard
,我发现它会恢复我的修改foo.java到原来的。
git reset --soft HEAD^
应该做你想做的事情。 在这之后,你将会在索引中有第一个改变(用git diff --cached
可见),并且你最新的改变不会被执行。 git status
将如下所示:
# On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: foo.java # # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: foo.java #
然后你可以做git add foo.java
并同时提交两个更改。
使用:
git reset HEAD^
这是默认情况下“混合”重置,这将做你所问; 把foo.java放在unstaged中,删除最近的提交。
git reset --soft
就是这样的:它就像git reset --hard
,但不会触及文件。
对我来说,以下方法总是更具可读性(因此更可取):
git reset HEAD~1
代替1
可以有任何数量的提交你想要取消。
为了取消上次提交中的所有文件 –
git reset HEAD~