想必大家在日常代码管理中经常用到 git commit --amend 这条实用命令, 其可以用来修改最后一条提交的 commit message, 也可以追加新的修改。
但有时候不小心 amend 了错误的内容, 如何回退呢?
方法一:
git reset 撤销到上一个提交, 再重新 git commit 一次。但如果工作区此时已经改的面目全非, 这时如果执行 git reset, 就很难分的清哪些内容属于被撤销的提交了。不过也不是无解,先git stash再git reset也可以解决。不过不太优雅。
方法二:
单次amend
如果只 amend 了一次, 那么直接用 git reset HEAD@{1} 就可以撤销这次 amend。
如果想撤销到暂存区, 就用 git reset --soft HEAD@{1} .
如果想干掉这个修改, 就用 git reset --hard HEAD@{1} .
多次amend
如果 amend 多次, 就参考 git reflog进行撤销。
閱讀更多 半杯茶的小酒杯 的文章