$ git commit -m "Something terribly misguided" # (1)
$ git reset HEAD~ # (2)
<< edit files as necessary >> # (3)
$ git add ... # (4)
$ git commit -c ORIG_HEAD # (5)
1.这是你想要撤销的东西。
2.这对你的工作树(磁盘上的文件状态)没有任何影响,但撤销了提交,并使你提交的修改没有被缓存(所以它们会在 "git状态 "中显示为"未被缓存的修改",所以你需要在提交之前再次添加它们)。如果你只想在之前的提交中添加更多的修改,或者改变提交信息1,你可以用git reset --soft HEAD~
来代替,这就像git reset HEAD~
2,但会使你现有的修改处于缓存状态。
3.对工作树文件进行修正。
4.4. git add
任何你想包含在新提交中的东西。
5.提交修改,重复使用旧的提交信息。reset
将旧的头部复制到.git/ORIG_HEAD
;commit
与-c ORIG_HEAD
将打开一个编辑器,最初包含旧提交的日志信息,允许你编辑它。如果你不需要编辑该信息,你可以使用-C
选项。
但是要注意,如果你在索引中添加了任何新的修改,使用commit --amend
会把它们添加到你之前的提交中。
如果代码已经被推送到你的服务器,并且你有权限覆盖历史(rebase),那么。
git push origin master --force
你也可以看一下这个答案。
上面的答案会告诉你git reflog
,它是用来找出你想恢复的SHA-1的。一旦你找到了你想撤销的点,就可以使用上面解释的命令序列。
11 但是请注意,如果你只是在提交信息中犯了一个错误,你不需要重置到更早的提交。更简单的方法是git reset
(解除你之后所做的任何修改),然后git commit --amend
,这将打开你的默认提交信息编辑器,预先填入最后的提交信息。
22 HEAD~
与HEAD~1
相同。
git rm yourfiles/*.class
git commit -a -m "deleted all class files in folder 'yourfiles'"
或
git reset --hard HEAD~1
警告。上述命令将永久删除您想提交的对.java
文件(以及任何其他文件)的修改。
硬重置 "到 "HEAD-1 "将把你的工作副本设置为你错误提交前的状态。