Git 仅在特定分支上获取标签?

Gab*_*iel 1 git git-refspec

我在用

git fetch origin feature/blabla
Run Code Online (Sandbox Code Playgroud)

真正具体地说明我想要获取什么。

  • 但是,这不会获取当前在 上的标签feature/blabla
  • A git fetchonly(假设分支已签出)也获取标签。

是否可以使用我的版本并同时获取标签?(我不想用 获取所有标签git fetch --tags)。尤其是在另一个分支上时,这非常有用。

Von*_*onC 6

首先检查添加 --tags 是否导入所有标签。

正如git/git commit 5328456中所示,git fetch手册页过去常说:

默认情况下,标签是自动跟随的。

这意味着当从远程获取时,将获取远程上指向本地存储库中存在的对象的任何标记。

因此,如果您只获取一个分支,则只应获取引用该分支的标签。

OP Gabriel在评论中报道说:

git fetch --tags --prune --prune-tags origin feature/blabla
Run Code Online (Sandbox Code Playgroud)

尽管它不起作用,但--all仍然会获取所有标签。

因此,行为必须发生变化,并且标签不再自动跟随。
Git 必须考虑每个标签,以检查它是否包含(引用其提交)您想要获取的分支。
这会大大延迟获取操作本身。

所以目前,--tags(意思是refs/tags/*)是唯一的选择。

或者一个复杂的脚本:

  • 在单独的本地克隆中获取标签
  • 在本地检查每个导入的标签是否引用分支
  • 将该单个标签从单独的本地克隆获取到原始本地克隆存储库。