已执行以下命令
git add <foo.java>
git commit -m "add the foo.java file"
我如何删除我的本地提交现在和取消foo.java?
如果我输入git reset——很难,我发现它会把我修改过的foo.java恢复到原来的。
已执行以下命令
git add <foo.java>
git commit -m "add the foo.java file"
我如何删除我的本地提交现在和取消foo.java?
如果我输入git reset——很难,我发现它会把我修改过的foo.java恢复到原来的。
当前回答
Git重置-软就是为了这个:它就像Git重置-硬,但不触及文件。
其他回答
对我来说,下面的方法更具可读性(因此更可取):
git reset HEAD~1
可以有任意数量的提交,而不是1。
Use:
git reset HEAD^
这做一个“混合”重置默认情况下,这将做什么你要求;将foo.java放入unstaging,删除最近的提交。
Git重置-软就是为了这个:它就像Git重置-硬,但不触及文件。
假设你想要取消n次提交的更改,
其中提交哈希如下:
h1 h2 ... hn hn + 1
然后执行如下命令: Git重置hn
现在HEAD是hn+1。从h1到hn的更改将是不分段的。
git重置-软头~1应该做什么你想要的。在此之后,您将在索引中看到第一次更改(通过git diff—cached可见),并且您的最新更改不是阶段性的。Git状态将如下所示:
# 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,并一次性提交两个更改。