假设您处于干净的工作状态,并且您的回购如下所示:如果你再跑git commit --amend编写提交消息,保存并退出编辑器,将发生以下情况:暂存区域,如果你还没有上演任何新的变化,将是相同的承诺f42c5-is用于创建一个新的提交:31b8e。它的父级将与您要修改的提交的父级相同f42c5。该master分支参考移到点到新的提交(31b8e)。该HEAD参考如下master。请注意,现在修改后的commit(f42c5)无法从您的存储库中的任何引用中获得(因此在我的图表上其为“透明”样式)。它仍然存在于存储库的对象数据库中,但是当Git运行其定期内务处理时,或者如果您通过运行git gc(垃圾回收)显式触发它,则最终将被永久删除。附录(基于Jason Baker的评论):请注意,只要修改过的commit f42c5仍然存在于您的仓库中,您就可以找出其commit ID(例如,通过从master分支的reflog中进行钓鱼),您仍然可以签出。跑步git checkout master # just to be sure that master is the current branchgit reset --hard f42c5或(假设与此同时,您尚未对master,重置master或以其他方式移动master分支引用进行任何新的提交)git checkout master # just to be sure that master is the current branchgit reset --hard master@{1}将使您处于以下情况:但是现在,提交31b8e将变得无法实现。