我在远程源中有以下分支。
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
我想获取以 ft_d
开头的分支。如何使用 git fetch
实现此目的?
我的 Git 版本是 1.7.9.5。
最佳答案
从 Git 2.6 版开始,您可以在获取或推送 refspec 中指定部分子字符串(使用简单的 glob 样式匹配)。因此:
git fetch origin 'refs/heads/ft_d*:refs/remotes/origin/ft_d*'
会按照您的要求去做。通用正则表达式不不可用,通用 glob 也不可用:只有 *
匹配两个固定字符串之间的所有内容的一种特定情况是允许的。 (这里有些固定的字符串可能是空的,通常是后半部分,即我们通常取refs/heads/*
,而不是refs/heads/*x
来获取名称以 x
结尾的分支。)
如果您的 Git 早于 2.6,则没有简单的方法可以一次性完成此操作。您将需要在一个循环中进行多次提取,并且您将需要进行自己的名称匹配,可能使用 git ls-remote
的输出。
(当然,git fetch origin
通常会把一切 带过来,正如在 remote.origin.fetch
配置条目中指定的或条目,在大多数情况下,以这种方式限制 git fetch
毫无意义。您确定要打扰吗?)
关于git fetch 指定前缀的分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40784842/