Refspec - это просто пара источник / пункт назначения.Использование refspec x:y
с fetch
говорит git сделать ветку в этом репо с именем "y", которая является копией ветви с именем "x" в удаленном репо.Ничего другого.
С pull
, git создает слияние сверху.Сначала выборка выполняется с использованием заданного refspec, а затем ветвь назначения объединяется с текущей веткой.Если это сбивает с толку, вот пошагово:
git pull origin master:mymaster
- Перейдите в источник и получите ветку "master"
- Сделайте копию этого файла локально с именем "mymaster"
- Слияние "mymaster" с текущей веткой
Полная квалификация, это будет refs/heads/mymaster
и refs/heads/master
.Для сравнения, заданная по умолчанию команда git для клона refspec имеет значение +refs/heads/*:refs/remotes/origin/*
.refs/remotes
создает удобное пространство имен для отделения удаленных веток от локальных.То, что вы делаете, говорит git поместить ветку удаленного отслеживания в то же пространство имен, что и ваши локальные ветви.
Что касается "отслеживания ветвей", это всего лишь запись в вашем конфигурационном файле, сообщающая git, куда обращатьсяи нажмите локальную ветку в / из по умолчанию.