git fetch 指定前缀的分支

标签 git git-branch git-fetch

我在远程源中有以下分支。

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/

相关文章:

git - pull-only repo 的 'git status' 表示该分支位于 origin/master 之前。为什么?

git - 了解 git 中的分离 HEAD

Git:将包含先前精心挑选的提交的分支与 master 同步

git - 如何从另一个分支完全替换 Git 中的 master 分支?

git - git fetch到底能做什么?

git - Git中的FETCH_HEAD是什么意思?

git - 安装Catalina Visual Studio代码后找不到git

git - 如何在 Windows 上安装 GitWeb?

git - 更改后指定 Git Rename

git - 如何快速查看哪个 Git 分支是最新的?