git - 在迁移之前修复损坏的 Git 存储库
问题描述
我已启用 Git 的源代码指向不再运行的死服务器。我正在尝试将此代码推送到具有所有过去历史记录、标签和分支的新存储库中。
我删除了旧的原点并添加了新的原点。在推动时,我发现它有损坏的对象。
使用命令git fsck --full
我可以看到broken link from to, dangling blob, dangling commit and missing blob.
这是否意味着分支和标签也会受到影响?我可以丢失一些历史记录,但我需要毫发无损的所有分支和标签。
我该如何解决这个问题?
解决方案
这是否意味着分支和标签也会受到影响?
这取决于。
很难对你的问题给出一个有根据的答案,因为你的情况在很多方面可能是独一无二的。鉴于提供的信息量,根本不可能提出“只做a、b和c ”的答案。
相反,我将列出您遇到的问题的可能解决方案的来源。
从到断开的链接
考虑研究“如何修复从树到树的 Git 错误断开链接? ”的公认答案。这个问题本身听起来很像你所看到的。
根据接受的答案,您似乎有可能通过放弃相关reflog
条目来摆脱错误报告。
悬垂的斑点
考虑研究“ Recover dangling blobs in Git ”的答案。
悬空提交
这些是不属于任何分支的提交。我会尝试找到所有这些,并在迁移之前将它们放在分支上。请参阅“什么是 Git 存储库中的悬空提交/blob,它们来自哪里? ”。
缺少斑点
看起来您可以通过删除丢失的 blob 来消除此错误。或者可能是该 blob 被重命名,现在它是一个悬空的 blob?考虑研究“如何从 Git 存储库中丢失的 blob 中恢复? ”的公认答案。
推荐阅读
- php - 使用 PHP 从网页元素中获取文本
- android - 构建AOSP时,如何防止ADB访问services.jar?
- python - 如何使用多个信号重新采样熊猫数据帧
- elasticsearch - Elasticsearch如何覆盖管道中的现有字段?
- apache-kafka - druid 中的 protobuf 摄取仅处于运行状态,但未创建数据源
- c# - Windows 窗体应用程序和 Windows 窗体应用程序 (.NET Framework) 有什么区别
- javascript - 如何根据选择选项显示输入字段?
- php - str_replace 替换错误值的问题
- react-admin - 教程在 SaveContext 中抛出 context is undefined 错误
- javascript - 制表符中的多选样式