git子树拆分后无法看到新的存储库

时间:2014-04-10 14:55:16

标签: git github git-subtree

我有一个使用一些自制“模块”的项目。我想将这些模块放在单独的(只读)存储库中。我尝试使用subtree split命令执行此操作。但我没有在任何地方看到我的新分支存储库。

我首先运行了这个命令:

git subtree split --prefix=src/Modules/Infra --branch=infra --annotate='Infra folder split' --rejoin master

然后使用Github GUI客户端(我在Windows上),我同步了待处理的更改。

但我认为没有任何区别。我的Github帐户中是否应该有一个名为infra的新存储库?这就是我正在努力实现的目标...我还有什么需要做才能让它发挥作用吗?

1 个答案:

答案 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