【问题标题】:Git - Broken Links, Missing & Dangling TreesGit - 断开的链接、丢失和悬空的树
【发布时间】:2013-06-06 06:51:48
【问题描述】:

我很高兴使用 Git - 几天前做了一些提交,这些都反映在远程仓库中。昨晚我打开 Smartgit Hg,它告诉我缺少树木。我跑了git fsck --full,得到了下面相当大的输出。

我是一名 Git 爱好者。我使用 GUI 来做我需要做的事情。我已尝试通读此 (https://git.wiki.kernel.org/index.php/GitFaq#How_to_fix_a_broken_repository.3F),但它并没有多大意义,而且盲目地遵循它似乎也行不通。

我做了一个git ls-tree c957fc03bb53181547142045917211fbc380a8df,它显示了一个文件列表。我一开始有 3 个 100644,所以我进入那个目录,运行 git hash-object -w filename,它输出的哈希值与 ls-tree 显示的相同。

wiki 页面说现在我已经完成了。除了git fsck --full 仍然为该树显示相同的消息。我感觉我可能在错误的东西上运行这些命令。

我试过在这里阅读其他 git 帖子,但它们对我来说没有意义。我不会撒谎的。

git fsck --full 检查对象目录:100% (256/256),完成。 检查对象:100% (1149/1149),完成。 树 c957fc03bb53181547142045917211fbc380a8df 的链接断开 到树 e7822f570245310f4b475e043f5fb02fa45c0d9e 树 8005ba4728321473684e670feb9c1ada8783c007 的链接断开 到树 4df5de19988a1fd7088da6e8214404cda2069852 树 3b1b915c6f306ae4f80a2b61767c4267d48df53d 的链接断开 到树 4dc2258f8d36dbea64b859ab5dff0fadc5bd591 树 c850459b3bd5899bd0a9eca40d69e49582f44a19 的链接断开 到树 912613a23bcb22f211ce0d8ab4fe2a8fddde78b6 提交 8775851e59bd5072ab98a739cfc00b231be54eab 的链接断开 到树 90e5f62642dde43c110b9882c564349074097955 树 331b16c460e6f9dd3bae9b0206857fc2c57bacb8 的链接断开 到树 fdead5b5ff4ae53b54104ab5b7fa2369f0adb4f7 树 3ca3d56fd7eabe9efb0d4212615cf85ced8f663f 的链接断开 到树 099070c9c54a16ca6b78c384a43c2e45d56eed71 树 ffe425a5a568e5e515fa5745e8dd0a3f9148ac6a 的链接断开 到树 91ec315f9730d3541bba2603f09d69b2b6d5ead0 从树 e38aa29f31a314bf71c40d800ea9d4b9422a09c3 断开的链接 到树 b9760875bb7b8be0799435625fd686c985860de2 树的链接断开 920755bbb97bcf526bfbd492451182bec66e6d39 到树 d4dcb141f4ea62228e85f6b35c5b4d2f22a8720e 树的链接断开 298bbba4562267349db2539e43cd2f12cd4317dd 到树 b8234d1f9efcc9691f2b35b8e4237dfa08bc140a 提交 f106420cddf314c6efa2e015e348006b82cd6348 的链接断开 到树 a5b976cb4f82b339f22c74811f47ad31d353764b 提交 5968e9e1479fdbba079ab64a6171f98b0f869b41 的链接断开 到树 64171c569ea7f74f59dc8f3dcc957220aa09f343 从提交 c54b5f446988645caf935382ea7bbc7ec57092f2 断开的链接 到树 fda728fd6e61790133f15e073335e2e6c43dc31b 从提交 37a6d43e9645873ab2315e641ef8bf55afc08012 断开的链接 到树 90c19ab5f9cb64e40cfcad2e30e1cf98ad586502 树 32009a6e84fd8639b411433d13bb707ed25a8992 的链接断开 到树 691f8fac71c39b2182acf51f56ac39c4bc4759d5 树 41db7d6238919ea58c2c64d9f333c63650e0e95a 的链接断开 到树 649a4fc0f5a9d06c67223a36116c7c8aeaa2c6b9 树 84f823c8d4032a3fe09ba4d962603fcb975dbf98 的链接断开 到树 7bb4a11dd10def2f1f4f9bae4eea02848fb833cb 提交 1b85354dd48be428b4d3937da24a9951efa9f451 的链接断开 到树 3d437dcff812a0e123d2e4b741dba47ad08a6b9e 提交 2cbfbe123e1a61584c519f190015622ae5b5c8c0 的链接断开 到树 0013af31f091e2d22b7ff7e63badf305597e63b4 树 fef036d59eb8944bb494a0eff85325c108fccf34 的链接断开 到树 896deb89905c80893512a61d9f8e9fc3760f3a53 从树 f26d568cf61282aa1f04e7828bddf8f9d7cf8ecb 断开的链接 到树 3d7994b9dad00c47c64b99e30693c0215b0aa5eb 从树 bc7d7d62d92c8989d9e398c8cbf036f1e205f855 断开的链接 到树 ea29c58710d7d3aa7cce589de9b46503d0e9565e 树 447585f3684b9915ba0ce99f41359da197ee8f54 的链接断开 到树 0992afc3aa3aa332fe3dc927a5e334f69638a898 提交 5e622e95cb5336521cbbdb7c03b860bb74eb9f8c 的链接断开 到树 7f91438587057ac610e44a5cf3318440e004a9bc 树 32f13f592d0a56d467234b838930039c0438e019 的链接断开 到树 9d3328f820a9308bab950ee9e513a200acd6d3f4 缺少树 099070c9c54a16ca6b78c384a43c2e45d56eed71 悬空树 5a0069463363b395881958eb8d9aac7ba1b9ddd8 悬垂的树 932053ef04d4f540d250d5e74332d141b4037009 悬垂的树 c7a04a22febdeb307f38019aff2e4f7645a7ea9f 悬空树cf10f1a8c2bb57520c6e0ad256e9fb344961c13a 悬空树 2c51ad373aef4844fc9e6babd878dfae5f5592b3 丢失的树 7f91438587057ac610e44a5cf3318440e004a9bc 缺少树 90c19ab5f9cb64e40cfcad2e30e1cf98ad586502 丢失的树 0992afc3aa3aa332fe3dc927a5e334f69638a898 悬空 blob 24226e3db997d21dc10aa70a9a8aa279aa55fb8a 缺少树 4dc2258f8d36dbea64b859ab5dff0fadc5bd591 悬垂的树 9c322d15436be34a99fcea442ad97ae40715ac61 悬垂的树 b4d2505972386aba42282232843d4e1b73148be4 缺少树 e7822f570245310f4b475e043f5fb02fa45c0d9e 缺少树 0013af31f091e2d22b7ff7e63badf305597e63b4 缺少 blob 35e3ddbc07214e74d8ad516736ee0e90b0a285c8 缺少树 3d437dcff812a0e123d2e4b741dba47ad08a6b9e 悬垂树 6d637bdae8eff5490df307fce3fd8a1bb2e5ce14 悬垂的树 79934929fc8423ec1c277ab21d14b7434cde7544 缺少树 9d3328f820a9308bab950ee9e513a200acd6d3f4 缺少树 b8234d1f9efcc9691f2b35b8e4237dfa08bc140a 悬垂的树 d1333fd1a2c9fed8bc3cc6f58ae00bf7fbe7c482 缺少 blob 20149c8fb22e309a26f477f0e500e122f6e99e66 悬空树 4054641b41208cc98387806a877855db15a109f9 缺少树 7bb4a11dd10def2f1f4f9bae4eea02848fb833cb 悬垂的树 f4948b5302a1fe79ea09c5959e0f3902d022a2b3 丢失的树 4df5de19988a1fd7088da6e8214404cda2069852 缺少树 90e5f62642dde43c110b9882c564349074097955 悬垂树 7966c4a2fc16a5559b569f5e200c0f01f0b186db 缺少树 912613a23bcb22f211ce0d8ab4fe2a8fddde78b6 缺少提交 b976d2df1880cb6c90db5bdf856440904cd22574 缺少树 b9760875bb7b8be0799435625fd686c985860de2 缺少提交 35e7e9f65cf5950ae2855afaf764672dd48a8b9b 丢失的树 64171c569ea7f74f59dc8f3dcc957220aa09f343 缺少树 fda728fd6e61790133f15e073335e2e6c43dc31b 悬垂的树 29088a01bfe6bde49cf1176b7ed1171dd8f8e334 缺少提交 e27876491d426b8d9f3932eb2ee494145f8776b5 悬垂树 e3c8535db10a99db65fbd5c2e58e2c3b59159d24 丢失的树 3d7994b9dad00c47c64b99e30693c0215b0aa5eb 悬垂树 6129fef595c71128c0dc24ebd4248ef231cfe90d 缺少树 a5b976cb4f82b339f22c74811f47ad31d353764b 缺少树 ea29c58710d7d3aa7cce589de9b46503d0e9565e 丢失的树 649a4fc0f5a9d06c67223a36116c7c8aeaa2c6b9 缺少提交 8f2ad8d3aaccfcfad8cd7c30ea938008378591fd 缺少 blob ea1ae4f5cd2a6ec1e9982108cdbce7de5858d0d9 悬垂树 f69a44eac9426e3fcfb4eb1545c966beb72b37b0 丢失的树 fdead5b5ff4ae53b54104ab5b7fa2369f0adb4f7 缺少提交 a69b6f1a1b224b2ba846590d6ddd65ca0079a1bb 缺少 blob 453c02a0bbce4748a3e3d3da4c29498cbf4b01d0 缺少树 91ec315f9730d3541bba2603f09d69b2b6d5ead0 缺少树 d4dcb141f4ea62228e85f6b35c5b4d2f22a8720e 缺少树 896deb89905c80893512a61d9f8e9fc3760f3a53 悬空树 deeec6312c058722ffcf1b5cf14d997c14890eb1 悬空 blob 0b7fc81faf339d77c2146f406a9f90c4431da4e2 缺少树 691f8fac71c39b2182acf51f56ac39c4bc4759d5 缺少 blob 7fef3c0e58d6c2825703576b3ecb148040e2b0cf 悬垂的树 95cf9c35987a0b715d4f736d2cf9dacf82c958ae 悬垂树 ce4feefca69bd3fbc82205c4c3f1c116f73b623c

【问题讨论】:

  • 尝试将远程存储库克隆到一个新文件夹中。它是否也有这些错误?如果没有,只需使用此克隆并删除损坏的。
  • 我克隆了。它没有错误。无论如何我可能会尝试这个,但是将文件夹(不是 .git 文件夹?)从我的“工作目录”复制到新克隆的目录是否安全?
  • 如果您想将您的评论作为答案,我会接受。我将更改的文件从一个目录移动到另一个目录,它已经识别出我有待处理。现在好像没事了。感谢您的帮助。
  • 使用 Git 2.10,git fsck --name-objects 也可以提供帮助。见my answer here

标签: git smartgit


【解决方案1】:

对我来说,一个简单的git gc 完成了这项工作...这给了我几个 rm: cannot unlink ... Permission denied 消息。但最终,它似乎对我的情况奏效了。

但可能取决于 repo 的损坏程度。

【讨论】:

  • 谢谢,这在 rebase 变坏后拯救了我的回购。虽然首先备份 repo 是一个好主意,以防 GC 垃圾收集你的提交不存在。
【解决方案2】:

尝试将远程存储库克隆到新文件夹中。
它是否也有这些错误?如果没有,只需使用此克隆并删除损坏的克隆。

任何尚未提交的修改文件都可以简单地复制到新文件夹中。重要提示:请勿复制 .git 文件夹。

【讨论】:

  • 我记得以前我不先搜索 stackoverflow,尝试几个小时我从未听说过的 git 命令,然后放弃一切。啊最简单的解决方案确实是最甜蜜的!
猜你喜欢
  • 2016-08-20
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
  • 1970-01-01
  • 2019-09-21
相关资源
最近更新 更多