这是一个noob问题,但我正在解决这个问题.我继承了一个奇怪的问题,一个git子树似乎是repo腐败.
这是场景:项目B中正在使用基于git的项目A的子树.部署部署脚本用于将子树推送到项目B的回购:
git subree push -P sub/path/name --squash git@github.com:MyCo/project_b.git projectb_branch
它开始推动提交并失败
"fatal: bad object {sha}"
Run Code Online (Sandbox Code Playgroud)
我在源代码的git日志中搜索了SHA.它出现在提交中:
git-subtree-dir: app/assets/ui
git-subtree-split: {sha}
Run Code Online (Sandbox Code Playgroud)
目标repo(project_b)确实具有该SHA的提交但源repo没有.我浏览了子树shell脚本,我可以看到它在尝试使用git log查找该对象时失败(在toptree_for_commit函数中调用git log -l --pretty = format:'%T'{sha}).
在这一点上,我在我的头脑中,但渴望寻找解决方案.在我的有限知识允许的情况下,我对此进行了研究,所以我欢迎任何可以让我更接近解决方案的提示,技巧或RTFM.
衷心的感谢!
Kev*_*ker 23
我刚遇到这个问题并且能够通过以下方式解决:
git remote add shared $url
git fetch shared
git subtree push -P $prefix shared $branch
Run Code Online (Sandbox Code Playgroud)
可能对所有人都没有帮助,但却让我不必破解回购结构.
我已经想通了;我在提交信息中找到了错误sha的引用。
解决这个问题最简单的方法是:
有点混乱,但比取消对有问题的提交的提交然后重新应用它们(在对有点类似的问题的回答中建议)更不容易出错。
不漂亮,但它完成了工作。