这是我的情况
- 我使用
git subtree add -P dir/ externalrepo master
添加了一个外部回购 - 从那里我在本地创建了一个分支(
git checkout -b newbranch
( - 做了一些改变,我承诺并推动它们
- 现在我只想用
git subtree push -P dir/ externalrepo master
将这些更改添加到外部回购中,但这就是结果
git push using: externalrepo master
Enumerating objects: 24, done.
fatal: remote error: want 585cc138094f5003142f0cb5a40f0f56ecd1facf not valid
error: remote unpack failed: eof before pack header was fully read
To github.com:user/externalrepo.git
! [remote rejected] 88c2aa24aea0bf7d7942209f31215b003cdf5e67 -> master (failed)
error: failed to push some refs to 'github.com:user/externalrepo.git'
我不知道如何将更改添加到外部回购
问题与部分克隆有关。我猜git subtree push
检查了所有的历史记录,并且考虑到它是部分克隆,所以整个历史记录不可用。解决方案是使用git pull --unshallow
获取所有历史记录,或者如果不起作用,请按照以下步骤删除部分克隆筛选器。或者,第二个选项来自不同的存储库,一个没有部分克隆的存储库(它仍然可以激活稀疏签出(尝试执行git subtree push
。