2016-01-22 74 views

回答

0

我没有找到一个简单的解决方案,但这个工作对我来说:

git branch -ar | sed 's|^[ \t]*||' | grep -e '^alice/' | sed 's|alice/||' | xargs git fetch alice 

说明:

  • 列表远程分支机构
  • 消除由git的分支产生前导空格
  • 只保留从“alice /”开始的分支,并从每个分支名称中删除该前缀
  • pa SS可以添加到您的.bashrc分支的名称git fetch

,或作为一般的bash函数:

# Usage: 
# git-sync-remote <remote-name> 
# Example: 
# git-sync-remote alice 
git-sync-remote(){ 
    REMOTE_NAME="$1" 
    if [ -z "${REMOTE_NAME}" ] ; then 
    echo 'You need to provide remote name' 
    return 
    fi 
    git branch -ar | sed 's|^[ \t]*||' | grep -e "^${REMOTE_NAME}/" | sed "s|${REMOTE_NAME}/||" | xargs git fetch "${REMOTE_NAME}" 
} 
1

我宁愿在我的回购协议的本地配置设置specific fetch refspecs,而不是依靠bash魔法解析。

git config remote.alice.fetch 'refs/heads/branch1/*:refs/remotes/origin/branch1/*' 
git config --add remote.alice.fetch 'refs/heads/branch2/*:refs/remotes/origin/branch2/*' 
git config --add remote.alice.fetch 'refs/heads/branch3/*:refs/remotes/origin/branch3/*' 

这样,git fetch alice只会获取指定的分支。