git - "Fatal: bad object"使用 git 子树推送时出错

标签 git subtree

这是一个新手问题,但我正处于解决这个问题的 Guzzle 之下。我继承了一个 git 子树的奇怪问题,似乎是 repo 损坏。

场景如下:项目 B 正在使用基于 git 的项目 A 的子树。部分部署脚本使用将子树推送到项目 B 的存储库:

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}

目标存储库 (project_b) 确实有一个使用该 SHA 的提交,但源存储库没有。我浏览了子树 shell 脚本,我可以看到它在尝试使用 git log 查找该对象时失败了(在调用 git log -l --pretty=format:'%T' {sha} 的 toptree_for_commit 函数中)。

在这一点上,我有点不知所措,但急切地想找到解决办法。在我有限的知识允许的范围内,我已经对此进行了研究,因此我欢迎任何可以让我更接近解决方案的提示、技巧或 RTFM。

衷心感谢!

最佳答案

我刚刚遇到了这个问题,并且能够通过以下方式解决:

git remote add shared $url
git fetch shared
git subtree push -P $prefix shared $branch

可能对所有人都没有帮助,但让我免于破解 repo 结构。

关于git - "Fatal: bad object"使用 git 子树推送时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12486326/

相关文章:

git - 暂时从 Git 分支中删除功能

git - 在这种情况下选择哪个 SCM? Redmine+git 还是 Fossil 还是?

svn - svn子树,从一个存储库更新,提交给另一个

java - 如何将现有的 eclipse java 项目添加到 git

git - 在 Github 上更改 pull 请求的基本分支时将删除哪些提交?

git - 错误 : gnutls_handshake() failed GIT repository

git - 使用git但不使用git子模块在子目录中安装wordpress

c++ - 是否有可能编写一个真正通用的磁盘烘焙 B+Tree 实现?

git - 使用git进行插件开发

git - 切换 Git 子树分支的正确方法?