Git pull subtree 删除了所有内容。

4
我试图利用git中的子树功能,使一个repo引用另一个repo,从而看起来拥有两个repo的所有文件。我已经阅读了一些介绍,如这里这里,并尝试跟着做。
所以我在git hub上有两个repo。我执行以下操作:
git checkout testBranchA
git pull origin testBranchA
git remote add external git@github.com:reharik/repoB
git fetch external
git checkout -b external external/testBranchB
git read-tree --prefix=src/ -u external
git commit -m "added subtree"

现在我查看我的文件系统,发现两个仓库的所有文件都在那里,一切都很完美。然后我执行

git pull -s subtree external testBranchB 

看起来两个本地仓库中的所有内容都被删除了。实际上,首先执行以下步骤:

removing src/...

在所有文件上运行后,它似乎进行合并,在此过程中您可以看到所有文件都有红色和绿色的加号和减号,然后它会执行

delete mode 100644 src/...

对于所有文件

我不确定我做错了什么,但显然是有问题的。

任何帮助都将不胜感激。

=== 编辑很抱歉一直更改命令,我的头有点晕了,但我想这就是我使用的语法


我曾经遇到过同样的问题。后来我发现是在添加子树(git subtree add)时,我忘记使用 --prefix 选项了。它应该像 git subtree pull 那样警告我,但实际上没有。一旦我在 add 时重新使用正确的 --prefix,后续的 pull 就正常工作了。 - KFL
1个回答

0

最后那个git pull -s subtree ...命令似乎不正确,因为它没有考虑子树的位置。现在这样做会尝试将两个树在根级别上合并在一起,这可能是文件被删除的原因。

请尝试使用以下命令:

git pull -s recursive -X subtree=src/ external testBranchB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接