概述:
我无法成功地将我们的 repo 中的更改拉到我们的生产服务器。
在我的 repo 上运行“git fsck”返回了 5 个相同错误的实例:
warning in tree [hash]: contains entries pointing to a null sha1
该错误存在于我们 repo 的所有版本中,包括托管在 bitbucket 上的版本。
我和我的同事都在我们非常希望保留的本地版本的存储库中进行了未推送和未提交的更改。
我已经尝试使用谷歌、stackoverflow 和手册页来解决这个问题,但我找不到一个好的指南来解释正在发生的事情或如何解决问题。
谈到 GIT,我和我的同事都是相对的菜鸟。我们已经掌握了基础知识,但我们还没有花时间在低级命令上。
对于恢复我的回购完整性的任何和所有帮助,我将不胜感激。
详细说明:
当我尝试将远程分支拉到我的生产服务器时,我的问题就开始了。它应该是对工作目录的简单更新,但我遇到了一些我不记得的模糊错误,发现我的工作目录已损坏。
合并失败后,Git 状态报告了大量未跟踪和修改的文件。我不知道如何用 git 命令解决问题,所以我手动操作文件系统来删除文件(但我没有触及 .git 目录中的任何内容)并将我的工作目录恢复到我的状态生产服务器将为我的网站提供服务而不会出错。
在我的 repo 上运行“git fsck”返回了 5 个相同错误的实例:
warning in tree [hash]: contains entries pointing to a null sha1
我跑了 git fsck :
- 我的开发机器上的仓库
- 我同事的开发机器
- 来自 bitbucket 在 dev 和 prod 上的新克隆版本 repo
我尝试的所有内容都显示相同的警告。所以无论问题是什么,它都存在于我们回购的所有版本中。
调用“git ls-tree [树哈希报告错误]”会显示正常的目录打印输出以及坏树哈希:
160000 commit 0000000000000000000000000000000000000000 [name of repo]
我找到的最接近解决方案的是这个 stackoverflow 帖子:How to remove an entry with null sha1 in a Git tree。但是,我无法真正理解这些步骤,剪切和粘贴命令也无法解决我的问题。
我的问题:
- 这些错误的真正含义是什么?他们有多严重?
- 我们如何修复我们的回购(如果可能,请为我们的菜鸟一步一步地进行)?
- 我们应该在修复之前还是之后提交并将所有更改推送到 repo?
- 修复回购有什么影响?我们如何将修复分发到所有版本的 repo(例如开发机器和生产服务器)?
- 是什么导致了这个错误,我们如何防止它再次发生?