git获取具有指定前缀的分支

dns*_*nsh 7 git git-fetch git-branch

我在远程起源有以下分支.

ft_d_feature_abc
ft_d_feature_xyz
ft_d_feature_lam
ft_d_feature_ton
ft_m_feature_mak
ft_m_feature_echo
ft_m_feature_laa
ft_m_feature_pol
Run Code Online (Sandbox Code Playgroud)

我想要获取以ft_d.开头的分支.我怎样才能实现这一目标git fetch?我的Git版本是1.7.9.5.

tor*_*rek 7

从Git 2.6版开始,您可以在fetch或push refspec中指定部分子字符串(使用简单的glob样式匹配).因此:

git fetch origin 'refs/heads/ft_d*:refs/remotes/origin/ft_d*'
Run Code Online (Sandbox Code Playgroud)

会做你想要的.广义正则表达式不可用,也不是通用的全局:只*允许匹配两个固定字符串之间的所有内容的一个特定情况.(这里的一些固定字符串可能是空的.通常后半部分,即我们通常获取refs/heads/*,而不是refs/heads/*x仅获取名称结尾的分支x.)

如果你的Git早于2.6,那么在一次获取中没有简单的方法可以做到这一点.在循环中,您将需要多次提取,并且您需要进行自己的名称匹配,可能使用来自的输出git ls-remote.

(当然,git fetch origin通常只会按照配置条目或条目中的规定将所有内容都放在一起,remote.origin.fetch并且在大多数情况下,限制git fetch这种方式没什么意义.你确定要打扰吗?)