git 获取具有指定前缀的分支
git fetch branches with specified prefix
我在远程源中有以下分支。
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是否支持正则表达式来获取分支,但是,您可以创建一个简单的脚本来为您完成:
for i in {1..3};
do
git fetch origin ft_d_feature$i
done
自 Git 版本 2.6 起,您可以在获取或推送 refspec 中指定部分子字符串(使用简单的 glob 样式匹配)。因此:
git fetch origin 'refs/heads/ft_d*:refs/remotes/origin/ft_d*'
会按照你的要求去做。广义正则表达式 不 可用,广义 globs 也不可用:只有 *
匹配两个固定字符串之间的所有内容的一种特定情况是允许的。 (这里有些固定的字符串可能是空的。通常后半部分是,即我们通常取refs/heads/*
,而不是refs/heads/*x
,只是取名字以x
结尾的分支。)
如果您的 Git 早于 2.6,则没有简单的方法可以一次性完成此操作。您将需要在一个循环中进行多次提取,并且您将需要进行自己的名称匹配,可能使用 git ls-remote
.
的输出
(当然,git fetch origin
通常会把 一切都带过来 ,正如在 remote.origin.fetch
配置条目中指定的那样,并且在大多数情况下有以这种方式限制 git fetch
没什么意义。你确定要打扰吗?)
另一种方法是列出您的远程分支:
PREFIX='ft_d_feature_'
for BRANCH in $(git branch | cut -c 3-); do
if [[ $BRANCH = $PREFIX* ]] ; then
echo $BRANCH;
fi
done
编辑
要为每个分支实际调用 git fetch
:
PREFIX='ft_d_feature_'
for BRANCH in $(git branch | cut -c 3-); do
if [[ $BRANCH = $PREFIX* ]] ; then
git fetch origin $BRANCH
fi
done
编辑2
另一种方法是创建 git 别名,您可以将其添加到 ~/.gitconfig
文件中。
[alias]
fetch-prefix = "!f(){ for BRANCH in $(git branch | cut -c 3-); do case $BRANCH in *) git fetch origin $BRANCH; esac; done; }; f"
用法:
git fetch-prefix ft_d_feature_
我在远程源中有以下分支。
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是否支持正则表达式来获取分支,但是,您可以创建一个简单的脚本来为您完成:
for i in {1..3};
do
git fetch origin ft_d_feature$i
done
自 Git 版本 2.6 起,您可以在获取或推送 refspec 中指定部分子字符串(使用简单的 glob 样式匹配)。因此:
git fetch origin 'refs/heads/ft_d*:refs/remotes/origin/ft_d*'
会按照你的要求去做。广义正则表达式 不 可用,广义 globs 也不可用:只有 *
匹配两个固定字符串之间的所有内容的一种特定情况是允许的。 (这里有些固定的字符串可能是空的。通常后半部分是,即我们通常取refs/heads/*
,而不是refs/heads/*x
,只是取名字以x
结尾的分支。)
如果您的 Git 早于 2.6,则没有简单的方法可以一次性完成此操作。您将需要在一个循环中进行多次提取,并且您将需要进行自己的名称匹配,可能使用 git ls-remote
.
(当然,git fetch origin
通常会把 一切都带过来 ,正如在 remote.origin.fetch
配置条目中指定的那样,并且在大多数情况下有以这种方式限制 git fetch
没什么意义。你确定要打扰吗?)
另一种方法是列出您的远程分支:
PREFIX='ft_d_feature_'
for BRANCH in $(git branch | cut -c 3-); do
if [[ $BRANCH = $PREFIX* ]] ; then
echo $BRANCH;
fi
done
编辑
要为每个分支实际调用 git fetch
:
PREFIX='ft_d_feature_'
for BRANCH in $(git branch | cut -c 3-); do
if [[ $BRANCH = $PREFIX* ]] ; then
git fetch origin $BRANCH
fi
done
编辑2
另一种方法是创建 git 别名,您可以将其添加到 ~/.gitconfig
文件中。
[alias]
fetch-prefix = "!f(){ for BRANCH in $(git branch | cut -c 3-); do case $BRANCH in *) git fetch origin $BRANCH; esac; done; }; f"
用法:
git fetch-prefix ft_d_feature_