使用git子树检出特定标记

时间:2015-12-22 08:30:38

标签: git git-subtree git-tag

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

我有一个git存储库,其中包含一个外部存储库作为子树。 我可以添加此外部存储库并从此存储库中签出特定分支。使用git subtree pull --prefix=<dir> --squash <remote> <branch>,所选分支的更新效果很好。

现在可以签出特定的标签吗?我无法在子树中找到有关标签的一些信息...

3 个答案:

答案 0 :(得分:7)

实际上任何引用都应该有效。子树的手册页显示了这一点。

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

<ref>可以是SHA,标签或分支。基本上任何git都可以解析为提交。

答案 1 :(得分:0)

git子树提取--prefix存储库参考--squash (如果您最初使用squash)。第一次拉动后,我用一个标签代替了没有壁球的ref,并导致了致命的事情:拒绝合并无关的历史记录,因为原始拉动是壁球。

答案 2 :(得分: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.

但是实际上什么也没做!没有一个文件是“检出”。

我设法通过git删除子树文件并再次从远程仓库读取树来解决该问题:

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"