Как я могу клонировать git-репозиторий и хранить удаленные устройства? - PullRequest
7 голосов
/ 11 октября 2011

Итак, я создал git-репозиторий, настроил некоторые теги и удаленные элементы в моей рабочей копии, а затем отправил репозиторий на мой сервер с помощью

git push --mirror my.remote.repository

Предположительно, нажатие с помощью git --mirror также приведет к удалению настроенных мной пультов.

Однако, если я сделаю

git clone my.remote.repository

Я не вижу пульты, которые я создал изначально. Нужен ли специальный синтаксис для клонирования пультов? Зеркало на самом деле не отправляет пульты? Где я ошибся?

Редактировать: Может быть, мой рабочий процесс странный: вот что я пытаюсь сделать. Репо изначально является клоном другого проекта (А), который я не контролирую, где я переименовал пульт в «восходящий». Я создал новую ветку 'master' и намереваюсь внести изменения в мою рабочую копию и развернуть их. Иногда я буду извлекать обновления из исходного репозитория (A) (переключаясь на исходную неизмененную ветку и вытягивая из апстрима). Тем не менее, я работаю с другими людьми, каждый из которых должен уметь это делать. Цель состоит в том, чтобы обновить основную ветку исправлениями ошибок из исходного репозитория (A) и зафиксировать изменения в основной ветке. Из-за этого, когда разработчик клонирует репозиторий, он должен наследовать ветвь верхнего уровня, чтобы он мог это сделать. Короче говоря, я пытаюсь использовать ветку «upstream», чтобы получать обновления из другого проекта. Я не использовал субмодуль для этого, так как ветка «upstream» фактически отвечает за 95% файлов в хранилище, и весь проект не имеет смысла без файлов из upstream.

1 Ответ

1 голос
/ 11 октября 2011

(Это не обычный рабочий процесс, но я все равно постараюсь ответить на прямой вопрос ...)

git push --mirror действительно подтолкнет ваши ветви удаленного отслеживания к тому же имени напульт.Однако, когда вы клонируете, по умолчанию вы получаете только ссылки под refs/heads, которые сопоставляются ветвям удаленного отслеживания под refs/remotes/origin/.Можно также клонировать с помощью git clone --mirror, чтобы получить удаленные ветви отслеживания и с удаленного пульта, но эта опция подразумевает --bare.

Если вам нужен репозиторий с рабочим деревом, ветви которого зеркально отображаются с удаленного, вы всегда можете изменить refspec в параметре конфигурации remote.origin.fetch, чтобы получать все ссылки с одинаковыми именами, но опять же я подозреваю, что реальная проблема заключается в том, что вы используете очень необычный рабочий процесс.

Кстати,даже если вы используете один из этих приемов для изменения отображения выбранных ссылок, это не приведет к клонированию самих пультов , которые определены в git config хранилища - git clone не клонируетчто-нибудь из .git/config, которое считается содержащим личную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...