git子树:是否可以更改分叉存储库中的子树分支/路径?

git子树:是否可以更改分叉存储库中的子树分支/路径?,git,merge,repository,git-subtree,Git,Merge,Repository,Git Subtree,在存储库a中,文件夹sub包含为存储库S的git子树,指向master分支 我已将存储库A分叉为F。现在,我想在F中执行以下操作之一: 更改sub以使用S的不同分支(即开发分支) 或者:更改sub以完全使用不同的存储库 其中一种可能吗?如果可能,如何可能?我应该知道会有什么副作用吗 当我合并我的更改(拉取请求)时,如何确保我的子树更改不会在存储库A中更新?我的意思是除了隔离提交之外。如果您使用git子树(而不是git子模块)来创建子树,那么它只是一个普通目录。要将它切换到另一个分支,只需删除

在存储库
a
中,文件夹
sub
包含为存储库
S
的git子树,指向
master
分支

我已将存储库
A
分叉为
F
。现在,我想在
F
中执行以下操作之一:

  • 更改
    sub
    以使用
    S
    的不同分支(即
    开发
    分支)
  • 或者:更改
    sub
    以完全使用不同的存储库
其中一种可能吗?如果可能,如何可能?我应该知道会有什么副作用吗


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

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

git rm <subtree>
git commit
git subtree add --prefix=<subtree> <repository_url> <branch>
git-rm
git提交
git子树添加--前缀=

这应该可以正常工作。

而且不会同步到上游?我想我会试试。它不会同步到上游。
不会保存在任何地方;它只是用来让命令知道从哪里获取文件。在那之后,你会在你的存储库中得到一个普通的子目录。。。子树只是“复制”另一个存储库的提交状态,就好像我手动复制了它一样(但保留了提交历史等等)。因此,这并没有改变我原来在两个存储库之间不同步特定文件夹的问题,但足以回答这个问题。根据我的经验,它工作得更好,并且在添加子树后无法完成。看见