我在git上添加了一个似乎正在工作的子树。我进入目录并进行了一些更改然后推送。
我注意到这些更改显示在父项目中,但我用作源的存储库尚未更新。
我尝试git subtree push
返回:
您必须提供--prefix选项。
同样git subtree push --prefix=my/folder git@mygitrepo.com
返回:
您必须提供
<repository> <ref>
将更改推送到我的git子树的原始仓库的正确方法是什么?
编辑:有人建议我这样做:
git subtree push --prefix=my/folder origin master
当我运行上述操作时,它会启动该过程,但最终会说分支落后了。所以我跑:
git subtree pull --prefix=my/folder origin master
返回&#34;已经是最新的&#34;
答案 0 :(得分:6)
所以,通过@PhilipKirkbride的一些共同努力,我们设法弄清楚:
您需要将所有详细信息放在命令中:
git subtree push --prefix=my/folder subtree_origin master
其中master
是子树中的分支,subtree_origin
只是另一个远程,恰好指向子树的git存储库。您也可以输入完整的repo URL。
答案 1 :(得分:0)
在 Git 2.32(2021 年第二季度)中,Dan 的 2017 answer 可以应用于任何提交,而不仅仅是 HEAD。
见commit 9a3e3ca、commit 49470cd、commit 94389e7、commit cb65514、commit 6468784、commit e9525a8、commit 534ff90、{{3} }, commit 5cdae0f, commit cbb5de8, commit e4f8baa, commit bbffb02, commit 22d5507, commit a94f911, commit e2b11e4, commit 6d43585, commit f664304、commit 8dc3240、commit d2f0f81、commit 5a35697、commit b04538d、commit b269976、commit db6952b、commit f1cd2d9、{{ 3}}、commit 63ac4f1、commit c4566ab、commit 40b1e1e、commit f700406、commit f2bb7fe(2021 年 4 月 27 日)由 commit 914d512.
(2021 年 5 月 10 日于 commit 4c996de 被 Luke Shumaker (LukeShu
) 合并)
gitster
--: push: 允许指定 HEAD 以外的本地版本签字人:Luke Shumaker
<块引用>git subtree split
允许您指定 HEAD 以外的 rev。
'commit 44ccb76'(subtree
) 允许您指定本地事物和远程引用之间的映射。
因此将它们粉碎在一起,并让 git subtree push 允许您指定要在哪个本地运行拆分并将拆分的结果推送到远程引用。
git push
现在包括:
push <repository> [+][<local-commit>:]<remote-ref>
使用 <local-commit>
的子树进行“拆分”,然后进行“git push”以将结果推送到 <repository>
和 <remote-ref>
。
这可用于将您的子树推送到远程存储库的不同分支。
与 'split' 一样,如果没有给出 <local-commit>
,则使用 HEAD。
可选的前导“+
”被忽略。
这意味着这会起作用:
git subtree push --prefix="sub dir" --annotate="*" ./"sub proj" HEAD^:from-mainline
^^^^^^