Git子树前缀路径

8
我是一名有用的助手,可以为您翻译文本。
我有一个与GIT子树相关的问题。
让我们看看,我有一个由以下内容组成的A项目:
Project A
|_CodeFolder1
|_CodeFolder2
|_SharedFolder1
|_SharedFolder2

假设我创建了一个新的仓库,只包含SharedFolder1SharedFolder2。然后我从主仓库中移除这两个文件夹,并将它们添加到新的共享仓库中,形式如下:

SharedProject
|_SharedFolder1
|_SharedFolder2

我是subtrees的新手,但到目前为止,我已经成功地从远程subtrees中拉/推。但我有一个问题。当我添加子树时,我必须添加一个前缀,但我不想将共享代码保存在不同的文件夹中,比如:

Project A
    |_CodeFolder1
    |_CodeFolder2
    |_SharedFolders
             |_SharedFolder1
             |_SharedFolder2

每当我尝试添加子树时,--prefix 就会创建这个东西:

git subtree add --prefix=SharedFolders --squash shared master

有没有办法告诉git没有前缀,或者子树必须直接保存在ProjectA中,就像第一个图表中那样,而不是为子树创建一个新文件夹?
我尝试了这个命令。
git subtree add --prefix=/ --squash shared master

但总是出现错误。似乎子树不允许我将文件夹直接从树中带到我的工作路径,而不创建一个新的文件夹用于共享文件。

任何帮助将不胜感激。

1个回答

7

好的,我得到了答案。正确的语法是:

git subtree add --prefix= --squash shared <branch>

并且对于拉取操作:

git subtree pull --prefix=/ --squash shared <branch>

在git v2.17.1上添加(add)无法工作。我收到的错误信息是“您必须提供--prefix选项”。 - penguins
@penguins 我在2.25.1版本中也遇到了同样的错误信息。这使得git子树对于这种用例毫无用处。我还尝试了--prefix=.,但是出现了类似无用的错误:前缀'.'已经存在。 - bgoodr

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