我在远程来源有以下分支。
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。
答案 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"