git clone
копирует все ветви и их историю, а SHA1 и не ссылки их голов. AFAIK refspecs не передаются, потому что они более новые для git, чем клонирование (очевидно), и протокол клонирования не сохраняет их ... это означает, что он угадывает (edit: это было подтверждено списком рассылки).
Ссылка на голову угадывается во время клонирования путем сопоставления его SHA1. В вашем случае SHA1 является неоднозначным, поскольку оба значения master
и testing
совпадают, поэтому master
выбирается по соглашению. Насколько мне известно, это нигде не задокументировано, но должно быть.
Чтобы убедиться, что это так, перейдите к вашему репозиторию B
example и запустите git ls-remote
. Вывод даст вам SHA1s, а не refs:
1c3eebcd1bd3659a40f02880918d5fbd5614b51a HEAD
1c3eebcd1bd3659a40f02880918d5fbd5614b51a refs/heads/master
1c3eebcd1bd3659a40f02880918d5fbd5614b51a refs/heads/testing
В качестве обходного пути,
git clone -b <branch_name>
клонирует и извлекает желаемую ветвь имя_в ветви, например, master или test.
Я думаю, что в настоящее время вы вынуждены придерживаться соглашения о том, что HEAD является мастером, а master является веткой по умолчанию для извлечения, и если у вас настроена другая голова для клонирования разработчиков, используйте ключ -b.