Git голый репо с несколькими ветками - PullRequest
1 голос
/ 17 февраля 2012

Я хочу создать git-репозиторий с несколькими ветками (master, development, release и т. Д.).Итак, вопрос в том, можно ли извлечь пустой репозиторий или как переключаться между ветвями (имеет ли смысл переключаться)?

Когда я хочу перейти в пустой репозиторий, могу ли я объединитьпустой репозиторий или слияние должно быть сделано локально и выдвинуть соответствующую ветку?Так что ищите правильный подход: -)

Спасибо, Питер

Ответы [ 2 ]

6 голосов
/ 17 февраля 2012

Я хочу создать git-репозиторий с несколькими ветками (master, development, release и т. Д.).

Судя по вопросу, кажется, что вы не уверены в причинах, по которым вы создадите пустой git-репозиторий, и как вы будете использовать этот репозиторий. Вопрос в том, , почему вы хотите сделать пустой репозиторий?

Начиная с Pro Git , пустой репозиторий - это «репозиторий, который не содержит рабочего каталога». Это хранилище, из которого вы не работаете, а просто используется для git push и git pull из. Причина этого подвела здесь :

"Чистое хранилище - это хранилище без извлеченной рабочей копии кода. Оно содержит только базу данных git. Как правило, вам никогда не следует загружать хранилище, содержащее изменения в рабочей копии. Чтобы этого не произошло в этом случае мы делаем серверное хранилище пустым хранилищем - у него нет рабочей копии. "

Итак, пустой git-репозиторий может содержать несколько веток. Вы определенно можете получить копию чистого удаленного репозитория в свой локальный репозиторий и передать его из локального репозитория в удаленный (голый) хранилище. Однако вы не хотите работать из своего голого хранилища. (Кроме того, невозможно запустить git add в пустом хранилище; см. этот вопрос SO для пояснения).

Итак, вопрос в том, можно ли извлечь пустой репозиторий или как переключаться между ветвями (имеет ли смысл переключаться)?

Этот вопрос, я думаю, не совсем понятен, потому что вы никогда не переключаете ветки в пустом хранилище - вы никогда не работаете в пустом хранилище . Все, что вы делаете, это толкаете или вытягиваете его.

Когда я хочу перейти к пустому хранилищу, могу ли я выполнить слияние с пустым хранилищем, или объединение должно быть выполнено локально и выдвинуть соответствующую ветку? Поэтому ищем правильный подход: -)

Для git-push в пустом хранилище, вы должны сначала убедиться, что нет конфликта слияния - если он есть, отправка не удастся ( Ссылка: book.git-scm.com, «Передача изменений в публичный репозиторий "). Следовательно, необходимо выполнить слияние локально , а затем с быстрой пересылкой в пустом хранилище с git-push.

Итак, ищем правильный подход.

В пустом хранилище нет ничего особенного, кроме того, что вы не должны и не можете работать из него. Как уже упоминали другие, модель gitflow дает вам представление о рабочем процессе, включающем несколько репозиториев - в SO много вопросов, требующих примеров и методологий рабочего процесса git. Почти каждая ссылка (1, Pro Git) , (2, book.git-scm.com) использует голое хранилище в сочетании с публичное или опубликованное хранилище - в связанных статьях подробно обсуждается создание и использование пустых хранилищ.

2 голосов
/ 17 февраля 2012

Вопрос немного неясен с тем, что вы пытаетесь сделать. Git не применяет конкретную модель рабочего процесса. Идея в том, чтобы оставить это на ваше усмотрение - команда разработчиков. Исходя из названий веток, которые вы опубликовали, мне кажется, что вы склоняетесь к модели gitflow , которая является очень успешным рабочим процессом для многих компаний и групп разработчиков.

Когда вы изначально создаете хранилище (если его где-то не существует на удаленном сервере), вы используете git init, который создает новый хранилище с веткой master по умолчанию. Затем вы можете добавить свои файлы с помощью git add и зафиксировать: git commit. Когда вы будете готовы отправить на удаленный git-сервер (например, github ), вы добавите URL-адрес удаленного git с помощью: git remote add origin <url> и отправите свой репозиторий на сервер с помощью git push origin master Если у вас уже есть удаленный сервер, с которого вы хотите клонировать репозиторий, вы должны использовать git clone <repo url>, который отключает репозиторий и указывает на ветку по умолчанию (обычно master).

Переключение ветвей полезно, когда вы хотите заняться разработкой для функциональной ветви, а затем объединить ее (например) или когда ваш код готов к выпуску, ветвиться в ветку release и в конечном итоге объединить ее. в живой / производственной отрасли. См. модель gitflow для получения подробной информации о том, как это сделать.

Для начала работы с git я рекомендую прочитать документацию на github , начиная с 'beginner'. Вы можете прочитать больше о том, что такое git и некоторые основные команды, в статье A List Apart Начните с статьи git .

...