我正在使用git-subtree(来自Avery Pennarun).在我目前的git repo中,我当然拥有所有项目文件/文件夹和一个名为"lib"的子树.如果我现在克隆这个git repo使用git clone我得到所有的项目文件和子树"lib"(一切都应该是).我现在尝试了:我在克隆的repo中的子树"lib"中更改了一些东西并试图将更改推回到子树"lib"的远程仓库中
git subtree push,但是它没有用.问题是什么?我是否必须首先使用git子树添加将其添加为子树?
Thx提前
Rog*_*Rog 17
免责声明,我怀疑我只是提前几天学习子树:-)
如果您刚刚使用git subtree push,则不会提供足够的子树信息来提取和推送您的更改.
如果你正确地克隆了repo,那么子树就已经存在了.子树需要被告知要推送哪个子树(即使你只有一个),它还需要知道推送到哪里 - 具体来说,你不想推送到顶级仓库.因此,你需要这样的东西:
git subtree push --prefix=lib git@github.com:arges-github/lib.git master
Run Code Online (Sandbox Code Playgroud)
显然,应该更改repo和refspec以匹配您的repo.
如果你想查看这里发生的事情(并且它确实有帮助),子树实际上将影响子树内文件的更改拆分为不同的分支,然后将其推送到子树仓库.要看到这种情况,请使用subtree split
git subtree split --rejoin --branch=shared-changes --prefix=lib
Run Code Online (Sandbox Code Playgroud)
然后看看你做过的分支:
git checkout lib-changes
Run Code Online (Sandbox Code Playgroud)
并手动推送它们
git push git@github.com:arges-github/lib.git master
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,那么可能是您没有将子树合并到您的仓库中.添加子树时:
git subtree add --squash --prefix lib git@github.com:arges-github/lib.git master
Run Code Online (Sandbox Code Playgroud)
您还需要合并子树并将其推回到顶级仓库.
git subtree pull --squash --prefix lib git@github.com:arges-github/lib.git master
git push
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19309 次 |
| 最近记录: |