使用 Git Subtree 检出特定标签

8

我可以在子树中使用标签吗?下面是一个具体的问题:

我有一个包含外部存储库作为子树的Git存储库。我可以添加这个外部存储库并从该存储库检出特定分支。使用git subtree pull --prefix=<dir> --squash <remote> <branch>命令可以成功更新所选分支。

现在,是否可以检出特定标签?我找不到关于子树中标签的信息...

3个回答

12

实际上,任何引用都可以使用。 subtree 的 man 手册显示了这一点。

git subtree pull  -P <prefix> <repository> <ref>

<ref> 可以是 SHA、标签或分支。基本上可以解析为 Git 提交的任何内容。


非常感谢您的回答!它很容易就解决了我的问题! :) (对于我迟迟未能回复,我很抱歉) - moudi
很高兴我能帮上忙 :) - crea1

0

我找不到一种方法来检出我的子树到特定的标签或分支,使用:

git subtree pull --prefix=my_subtree_dir my_remote tags/my_tag

我得到了以下日志:
From ../remotes_dir/my_remote
* tag               my_tag     -> FETCH_HEAD
Already up-to-date.

但实际上,什么都没做!没有一个文件被“checkout”。

我通过从我的远程仓库中删除子树文件并再次从中读取它们来解决了这个问题:

git rm -r lib3dsp
git read-tree --prefix=lib3dsp/ -u tags/my_tag

以下是我如何配置我的子树:

git remote add <my_remote>
git fetch <my_remote>
git merge -sours --no-commit <my_remote>/master
git read-tree --prefix=<my_subtree_dir> -u <my_remote>/master
git commit -m "merge <my_subtree> repo"

0
如果您最初使用了 squash,那么在执行 git subtree pull --prefix repository ref --squash 命令时,请确保 ref 参数与最初使用的相同。如果您在第一次 pull 后使用了一个标签代替 ref 参数且没有使用 squash,那么会出现“fatal: refusing to merge unrelated histories”的错误提示,因为最初的 pull 使用了 squash。

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