プロジェクトでベンダー リポジトリを管理するために git-subtree (https://github.com/apenwarr/git-subtree) を使用しています。
しばらく前に、プロジェクトのレイアウトを作り直しました。その一部には、一部のベンダー コードを削除し、ベンダー リポジトリの新しいコピーから git-subtree を使用して再読み込みする作業が含まれていました。ベンダー リポジトリの新しいコピーは同じコードでしたが、ゼロから再作成したため、共通のコミットはありませんでした。
関連するコミットは次のとおりです(下から上に読んでください):
commit df47ba0d6437737473aba206fdc9f2b902fbb073
Merge: 4bc6a27 80b6bb7
Author: User <user@user.com>
Date: Fri Dec 2 01:48:30 2011 -0500
Merge commit '80b6bb7ae01fdda2fe7e0c545004136724cbf059' as 'External/Libraries/stlsoft'
commit 80b6bb7ae01fdda2fe7e0c545004136724cbf059
Author: User <user@user.com>
Date: Fri Dec 2 01:48:30 2011 -0500
Squashed 'External/Libraries/stlsoft/' content from commit 03149e3
git-subtree-dir: External/Libraries/stlsoft
git-subtree-split: 03149e3a4c3289b5a88fc3f7ae17fb11c44c4d68
# Repo containing 6324cb1724fcdf87294b2e4f438dedf5920a3156 is deleted, External/Libraries/stlsoft
# is deleted and re-'git subtree add'ed from a new repo in the commits above.
commit e235b6c46d10b83c56d5c9f70d2b00df1137fbb3
Merge: 98ee319 79b7a31
Author: User <user@user.com>
Date: Mon Apr 11 16:09:54 2011 -0400
Merge commit '79b7a31fe4bc2d5beaca64cd6be0be4d0c971e4a' as 'External/Libraries/stlsoft'
commit 79b7a31fe4bc2d5beaca64cd6be0be4d0c971e4a
Author: User <user@user.com>
Date: Mon Apr 11 16:09:54 2011 -0400
Squashed 'External/Libraries/stlsoft/' content from commit 6324cb1
git-subtree-dir: External/Libraries/stlsoft
git-subtree-split: 6324cb1724fcdf87294b2e4f438dedf5920a3156
ここで、ベンダー リポジトリ (03149e3a4c3289b5a88fc3f7ae17fb11c44c4d68 を含む「新しい」リポジトリ) に 'git サブツリー プッシュ' しようとすると、次のエラーが発生します。
$ git subtree push -P "External/Libraries/stlsoft/" /f/vendor/stlsoft mod2
git push using: f:/vendor/stlsoft mod2
fatal: bad object 6324cb1724fcdf87294b2e4f438dedf5920a3156
Couldn't push, 'git subtree split' failed.
git-subtree-dir は指定されたプレフィックスと一致しますが、コミット 6324cb1724fcdf87294b2e4f438dedf5920a3156 がなくなり、そのレポが存在しないためフェッチできません。
これを修正する方法に関する推奨事項はありますか? 現在、2 つのオプションを確認できます。 1. 新しいディレクトリの下に再度追加します (原則として、これを行いたくありません)。2.破損の原因となっている以前のコミットのサブツリー データを手動で消去します (一般的にこれを行うことはお勧めしませんが、このレポの他のコピーがあまりないため、この場合は回避できると思います)。 .