如果提交4和5仅在您的存储库中并且未被任何其他存储库推送或拉动,您可以简单地:
git reset --hard SHA1_HASH_OF_COMMIT_3
您可以使用git log或者使用更高级的命名技术找出提交的SHA1哈希,git help rev-parse特别参见"指定修订"部分.
使用此命令将使提交4和5无法从分支的提示处访问.但是,这些提交不会丢失,因为这些提交保存在分支的reflog中.您可以使用它git reflog来标识无法访问的提交.然后可以用另一个完成恢复git reset --hard.这里的这个页面描述得非常好.
建议您git gc定期跑步; 一些命令也会自动为您执行此操作.这基本上在存储库上执行"内务处理",例如"压缩文件修订(以减少磁盘空间和提高性能)并删除无法访问的对象".在(默认值)30天后,无法访问的对象将从存储库中删除.可以使用配置选项更改此设置gc.reflogExpireUnreachable.