如何在进行本地提交后再次取消我的文件?

我已经完成了以下命令

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~