我阅读了这篇文章:http://jenkins-ci.org/content/summary-report-git-repository-disruption-incident-nov-10th,它描述了一个事件,其中一个用户从仓库的旧状态意外触发了
现在当然需要一些清理工作来恢复原始状态分支。但是由于Git从不删除信息,因此我认为这个清理过程始终是可能的。
所以即使您进行了变基、强制推送(和其他可能重写历史的操作),原始提交仍然存在,只需要找到它们,对吗?
简而言之,是否有任何(破坏性)的Git操作实际上会删除数据?
git push --force
。现在当然需要一些清理工作来恢复原始状态分支。但是由于Git从不删除信息,因此我认为这个清理过程始终是可能的。
所以即使您进行了变基、强制推送(和其他可能重写历史的操作),原始提交仍然存在,只需要找到它们,对吗?
简而言之,是否有任何(破坏性)的Git操作实际上会删除数据?
commit --amend
(参见此处)、rebase、force push 等操作后变得不可访问的对象会在仓库的对象数据库中存留一段时间。尽管这些对象最终会被垃圾回收,但默认情况下,这个过程并不是立即执行的,这给了你一些时间来修复问题。 - jub0bs