我git-subtree从无关的repos多次添加到相同的前缀,现在我不能子树推送

时间:2012-04-04 01:15:11

标签: git git-subtree

我正在使用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

现在如果我尝试'git subree push'回到供应商仓库(包含03149e3a4c3289b5a88fc3f7ae17fb11c44c4d68的“新”),我收到以下错误:

$ 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匹配我给定的前缀,但是不再提交任何提交而且我无法获取它,因为该repo不再存在。

有关如何解决此问题的任何建议?我现在可以看到两个选项: 1.在新目录下重新添加(原则上我不想这样做)。 2.手动擦除上一次提交中导致破坏的子树数据(不建议一般这样做,但我认为在这种情况下我可以侥幸使用它,因为这个repo没有很多其他副本)

0 个答案:

没有答案