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

时间:2016-11-24 11:08:04

标签: 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。

3 个答案:

答案 0 :(得分:7)

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

Settings > Manage Environments > MyEnvironment

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

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

(当然,git ls-remote通常只会将所有内容过来,如git fetch origin配置条目中指定的那样,并且在大多数情况下会有一些以这种方式约束remote.origin.fetch。你确定要打扰吗?)

答案 1 :(得分:0)

我不确定Git是否支持用于获取分支的正则表达式,但是,您可以创建一个简单的脚本来为您执行此操作:

for i in {1..3};
do
    git fetch origin ft_d_feature$i
done

答案 2 :(得分:0)

另一种方法是列出您的远程分支:

<?php
    /**
     * Lists searched entities.
     *
     * @Route("/search", name="test_search")
     * @Method("GET")
     */
    public function searchAction(Request $request)
    {
        $query = $em->createQuery('SELECT t FROM AppBundle:Test t');
        $categorias = $query->getArrayResult();

        $response = new Response(json_encode($categorias));
        $response->headers->set('Content-Type', 'application/json');

        return $response;
    }

修改

要为每个分支实际调用PREFIX='ft_d_feature_' for BRANCH in $(git branch | cut -c 3-); do if [[ $BRANCH = $PREFIX* ]] ; then echo $BRANCH; fi done

git fetch

<强> EDIT2

另一种方法是创建一个git别名,您可以将其添加到PREFIX='ft_d_feature_' for BRANCH in $(git branch | cut -c 3-); do if [[ $BRANCH = $PREFIX* ]] ; then git fetch origin $BRANCH fi done 文件中。

~/.gitconfig

使用方法:    [alias] fetch-prefix = "!f(){ for BRANCH in $(git branch | cut -c 3-); do case $BRANCH in $1*) git fetch origin $BRANCH; esac; done; }; f"