如何使用 git 子树从另一个存储库中提取我的所有标签?

How to pull all my tags using the git subtree from another repository?

如何使用来自另一个存储库的 git 子树提取我的所有标签?

我刚刚创建了一个新的存储库,并使用以下命令添加了另一个带有 git 子树的存储库:

git subtree add --prefix=Galileo https://github.com/username/Galileo master

但它没有存储库中的任何标签 username/Galileo。您可能会在 https://github.com/username/AlliedModdersFiles 上看到它。如何获得?

还有另一个答案 ,我得到了这个错误:

git subtree pull --prefix=Galileo https://github.com/username/Galileo tags/3.2.3
Working tree has modifications.  Cannot add.

我的工作树是 clean/there 是修改。此外,我需要处理标签名称冲突,因为多个子树将从存储库 main_repo/SubtreeA、main_repo/SubtreeB、main_repo/SubtreeC 中获取与 1.0.0、1.0.1 同名的标签等等

还有其他问题Git subtree tags,但我不明白什么意思:

git merge -s ours --no-commit v0.1.2 # instead of: Bproject/master (2)
git read-tree --prefix=dir-B/ -u v0.1.2 # instead of: Bproject/master (3)

以及我如何使用它来获取我的标签。这与以下内容有关:

  1. git subtree fetch - unwanted remote tags
  2. How to push tags with git subtree?

要获取标签,只需执行以下操作:

git remote add galileo_remote https://github.com/username/Galileo
git fetch --tags

但是它会变得一团糟,因为所有子树的所有标签都会相互冲突。一种解决方案是为它们全部添加前缀,但这样做很麻烦。那么最好的方法是不在主存储库上处理子树标签,而是在专用子树存储库上处理。

现在每个人都可以拥有很棒的标签,如 1.0.0,而无需相互冲突。这也是一种更好的方法,因为它会保持主存储库标签的清洁,而不会出现来自多个前缀子树存储库的所有标签混乱。