我有一个使用一些自制“模块”的项目。我想将这些模块放在单独的(只读)存储库中。我尝试使用subtree split
命令执行此操作。但我没有在任何地方看到我的新分支存储库。
我首先运行了这个命令:
git subtree split --prefix=src/Modules/Infra --branch=infra --annotate='Infra folder split' --rejoin master
然后使用Github GUI客户端(我在Windows上),我同步了待处理的更改。
但我认为没有任何区别。我的Github帐户中是否应该有一个名为infra
的新存储库?这就是我正在努力实现的目标...我还有什么需要做才能让它发挥作用吗?
答案 0 :(得分:1)
仅运行该命令不会在Github中创建新项目,它只会创建一个单独的提交树,其中--prefix
目录是根目录而不是子目录。
运行该命令将输出一个散列,该散列是新分割树的最后一次提交。这是可以推送到Github中的新项目的提交,但您必须手动创建新项目。
# First create a new empty Github project
# In your original repository add it as a remote
git remote add subtree_repo path/to/github/repo
# push the split commit hash into the new project as master
git push subtree_repo subtree_hash:master
如果您不再拥有哈希,请检查git subtree split
命令创建的提交。由于您使用--rejoin
创建了一个提交,它将拆分树合并到您的master
分支中。该提交的父母之一是您想要的分割树。
一些额外的subtree documentation。