免责声明,我怀疑我只比你早几天了解子树:-)
如果您只是在使用git subtree push
,那么您没有提供足够的信息来提取和推送您的更改。
如果您正确克隆了 repo,则子树将已经存在。子树需要被告知你想从哪个子树推送(即使你只有一个),它还需要知道推送到哪里——具体来说,你不想推送到顶级仓库。因此,你想要这样的东西:
git subtree push --prefix=lib git@github.com:arges-github/lib.git master
显然,应该更改 repo 和 refspec 以匹配您的 repo。
如果您想查看这里发生的事情(它确实有帮助),子树实际上会将影响子树内文件的更改拆分到不同的分支,然后将其推送到子树存储库。要看到这种情况发生,请使用subtree split
git subtree split --rejoin --branch=shared-changes --prefix=lib
然后看看你所做的分支:
git checkout lib-changes
并且,手动推动它们
git push git@github.com:arges-github/lib.git master
如果这不起作用,则可能是您尚未将子树合并到您的存储库中。添加子树时:
git subtree add --squash --prefix lib git@github.com:arges-github/lib.git master
您还需要合并子树并将其推回您的顶级仓库。
git subtree pull --squash --prefix lib git@github.com:arges-github/lib.git master
git push