これは初心者の質問ですが、私はこれを解決するために銃の下にいます。レポの破損のように見えるgit サブツリーに関する奇妙な問題を継承しました。
シナリオは次のとおりです。git ベースのプロジェクト A のサブツリーがプロジェクト B で使用されています。デプロイ スクリプトの使用の一部で、サブツリーがプロジェクト B のリポジトリにプッシュされます。
git サブツリー プッシュ -P サブ/パス/名前 --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 でのコミットがありますが、ソース リポジトリにはありません。サブツリー シェル スクリプトを調べてみたところ、git log (git log -l --pretty=format:'%T' {sha} を呼び出す toptree_for_commit 関数内) でそのオブジェクトを検索しようとすると、失敗していることがわかります。
この時点で、私は頭を悩ませていますが、解決策を見つけようとしています。限られた知識が許す限りこれを調査したので、解決策に少し近づくためのヒント、トリック、または RTFM を歓迎します。
心から感謝します!