假设我有一个名为alice
的git遥控器。这个遥控器有数百个分支,但我只使用git fetch alice some-branch
,git fetch alice another-branch
等从中获取了一些分支。
现在,我想从alice
只同步我已经拥有的分支 - 我不想再获取所有分支。我该怎么做?
答案 0 :(得分:1)
我宁愿在我的repo的本地配置中设置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/*'
只会获取指定的分支。
答案 1 :(得分:0)
我没有找到一个简单的解决方案,但这个对我有用:
git branch -ar | sed 's|^[ \t]*||' | grep -e '^alice/' | sed 's|alice/||' | xargs git fetch alice
说明:
git fetch
或者,作为可以添加到.bashrc
的一般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}"
}