2013-08-30 84 views
17

在存储库A中,文件夹sub包含在存储库S的git子树中 - 指向master分支。git子树:可以更改分支库中的子树分支/路径?

我已将分叉库A分成F。现在我想执行下列操作,F之一:

  • 变化sub使用S(即develop分支)的不同分支
  • 或:改变sub使用不同的存储库完全

这些可能是其中之一,如果是这样,怎么样?会有任何我应该知道的副作用吗?

当我合并我的更改(拉取请求)时,如何确保我的子树更改不会在存储库A中更新?我的意思是除了隔离提交。

回答

28

如果您使用git subtree(而不是git submodule)创建子树,那么它只是一个普通的目录。要将其切换到另一个分支,只需将其删除并从新分支重新创建子树。这是:

git rm <subtree> 
git commit 
git subtree add --prefix=<subtree> <repository_url> <branch> 

这应该没有问题。

+0

那将不会在上游同步?我想我会尝试一下。 – LearnCocos2D

+0

它不会同步到上游。 ''不保存在任何地方;它只是用于命令来知道从哪里获取文件。之后,你会在你的仓库中得到一个正常的子目录。 – elmart

+0

好吧,我看到现在......子树只是“复制”另一个存储库提交的状态,就好像我手动复制了它(但保留了提交历史记录以及不存在的内容)。所以这并不会改变我原来的问题,即不能在两个存储库之间同步特定的文件夹,但可以充分回答这个问题。 – LearnCocos2D