【问题标题】:GIT pull/fetch from specific tagGIT 从特定标签拉/取
【发布时间】:2011-04-27 05:38:05
【问题描述】:
有没有办法从 repo 中的特定标签中提取/获取代码。
我知道克隆后,我可以结帐到标签,但是可以在拉取期间指定标签吗?
在 ClearCase 中,我可以 rebase 或交付特定的代码基线,有没有一种方法可以让我使用 git 标签来类似地将代码拉/推到指定标签?
【问题讨论】:
标签:
git
git-pull
git-fetch
【解决方案1】:
ClearCase 会有所不同,因为您只能重新设置在父 Stream 上生成的基线(尽管您可以将任何基线从任何 Stream 传递到您的 Stream)。
因此,您使用 ClearCase 进行的合并类型存在一些限制。
使用 Git,您可以将任何提交合并到当前分支的 HEAD。
如果该提交来自远程仓库,它将首先导入本地仓库的远程分支(git pull 的“fetch”部分),然后合并。
git pull [options] [<repository> [<refspec>…]]
git pull 命令的“refspec”部分表示你可以拉取任何东西。
<refspec> 可以命名任意的远程引用(例如,标签的名称),甚至可以命名具有相应远程跟踪分支的引用集合(例如,refs/heads/:refs/remotes/origin/),但通常它是分支的名称在远程存储库中。
另见How to pull remote branch with specified commit id?
【解决方案2】:
Pull 是 fetch + merge。
谈到如何获取特定的远程引用(标签或分支),可能一个例子可以更好地阐明这一点:
git fetch origin :refs/remotes/origin/master
或者更短的形式:
git fetch origin :remotes/origin/master
请注意,即使 remotes/origin/master 已在本地删除。
另一个直接从远程标签创建本地分支的例子
git fetch <repo_url> +refs/tags/<TAG>:<branch>