Это необходимо по замыслу. Когда вы выполняете git-pull
, имя ветки, из которой вы извлекаете, является удаленной веткой. У него нет другого выбора, кроме как связаться с удаленным репозиторием, чтобы получить список возможных дополнений.
Вы можете доказать это себе, если попытаетесь автоматически выполнить команду git-push
. Завершение master
имени ветви будет намного быстрее, потому что вы продвигаете локальную ветку, поэтому вам не нужно обращаться к удаленному репозиторию.
Если вы хотите, чтобы автозаполнение всегда завершалось с использованием локальных имен веток, вы можете изменить поведение. Это может быть полезно, только если ваши локальные имена ветвей идентичны именам удаленных ветвей. Отредактируйте файл ~/.git-completion.bash
и около строки 458, найдите этот код:
fetch)
if [ $lhs = 1 ]; then
__gitcomp "$(__git_refs2 "$remote")" "$pfx" "$cur"
else
__gitcomp "$(__git_refs)" "$pfx" "$cur"
fi
;;
pull)
if [ $lhs = 1 ]; then
__gitcomp "$(__git_refs "$remote")" "$pfx" "$cur"
else
__gitcomp "$(__git_refs)" "$pfx" "$cur"
fi
;;
push)
if [ $lhs = 1 ]; then
__gitcomp "$(__git_refs)" "$pfx" "$cur"
else
__gitcomp "$(__git_refs "$remote")" "$pfx" "$cur"
fi
;;
esac
... и изменить это на это:
fetch)
if [ $lhs = 1 ]; then
__gitcomp "$(__git_refs)" "$pfx" "$cur"
else
__gitcomp "$(__git_refs "$remote")" "$pfx" "$cur"
fi
;;
pull)
if [ $lhs = 1 ]; then
__gitcomp "$(__git_refs)" "$pfx" "$cur"
else
__gitcomp "$(__git_refs "$remote")" "$pfx" "$cur"
fi
;;
push)
if [ $lhs = 1 ]; then
__gitcomp "$(__git_refs)" "$pfx" "$cur"
else
__gitcomp "$(__git_refs "$remote")" "$pfx" "$cur"
fi
;;
esac
(Обратите внимание, что мы изменили секции "fetch" и "pull", чтобы использовать ту же логику, что и "push". Это означает, что он будет искать локальные имена ветвей вместо удаленных.)