【发布时间】:2012-09-18 23:05:03
【问题描述】:
这是一个菜鸟问题,但我有能力解决这个问题。我继承了一个 git 子树的奇怪问题,似乎是 repo 损坏。
这是场景:基于 git 的项目 A 的子树正在项目 B 中使用。部分部署脚本使用将子树推送到项目 B 的 repo:
git subtree push -P sub/path/name --squash git@github.com:MyCo/project_b.git projectb_branch
它开始推送提交并失败
"fatal: bad object {sha}"
我在源代码库的 git 日志中搜索了 SHA。它显示在提交中:
git-subtree-dir: app/assets/ui
git-subtree-split: {sha}
目标 repo (project_b) 确实具有该 SHA 的提交,但源 repo 没有。我浏览了子树 shell 脚本,我可以看到它在尝试使用 git log 查找该对象时失败(在调用 git log -l --pretty=format:'%T' {sha} 的 toptree_for_commit 函数中)。
在这一点上,我不知所措,但渴望找到解决方案。在我有限的知识允许的情况下,我已经对此进行了研究,因此我欢迎任何可以让我更接近解决方案的提示、技巧或 RTFM。
由衷的感谢!
【问题讨论】:
-
您本地的
git reflog是否包含{sha}? -
不。不幸的是没有。