Как переименовать мою ветку git 'master' в 'release'? - PullRequest
76 голосов
/ 06 января 2012

Мы хотели бы ввести в действие новую политику для наших проектов, чтобы ветвь master теперь называлась веткой релиза, чтобы обеспечить более четкое представление о том, как следует использовать ветвь.Естественно, у нас также будут разрабатываться и выпускаться ветви-кандидаты.

Я понимаю, что я могу переименовать основную ветку локально, просто используя следующее:

git branch -m master release

Однако это только локально.Даже если я нажму это на пульте, HEAD все равно будет указывать на удаленную главную ветвь.Я хочу полностью избавиться от основной ветки и сделать локальную ветку по умолчанию при первоначальном клонировании, выпустить релиз.

Как мне этого добиться?

РЕДАКТИРОВАТЬ: Этокажется, что, поскольку источник находится на gitorious сервере, я получаю ошибки, удаляя главную ветвь.Сейчас я пытаюсь понять, возможно ли изменить это так, чтобы ветка по умолчанию была 'release'.

Ответы [ 5 ]

97 голосов
/ 06 января 2012
git checkout -b release master    # create and switch to the release branch
git push -u origin release        # push the release branch to the remote and track it
git branch -d master              # delete local master
git push --delete origin master   # delete remote master
git remote prune origin           # delete the remote tracking branch
9 голосов
/ 06 января 2012

Оформление вашей основной ветки

git checkout master

Создайте свою ветку релиза и переключитесь на нее

git branch release
git checkout release

Нажмите это на сервер

git push origin release

Удалите главнуюссылка на ветку на сервере

git push origin :master

Удалить локальную главную ветку

git branch -d master
2 голосов
/ 09 января 2015

Примечание. Этот ответ предназначен для автономных git-серверов, к которым у вас есть доступ к командной строке.

Поскольку попытка удаления remote master с клиента действительно недопустима иЯ предполагаю, что запрещение denyDeleteCurrent имеет смысл, я не хотел бы менять эту настройку.

Однако я обнаружил, что самый простой способ переименовать ваш мастер , если у вас есть доступ из командной строки к удаленному серверу , это запустить команду переименования непосредственно на удаленном компьютере.

Это сработало для меня:

  1. Вход через SSH на удаленный git-сервер
  2. Перейдите в папку xxx.git вашего проекта
  3. run: git branch -m master release

Теперь удаленный репозиторий использует release в качестве ветви по умолчанию, и любые git clone в этом репозитории с любого клиента будут проверять ветку выпуска по умолчанию.

Очень полезно также после настройки чистого репозитория для настройки его под ваши нужды.

2 голосов
/ 16 июля 2012

Как уже было сказано другими, проблема здесь заключается в Gitorious, который не позволяет удалять ветку HEAD по умолчанию.У вас есть два варианта решения этой проблемы.Один из них - войти на сервер gitorious (с помощью ssh), найти git-репозиторий на файловом сервере и добавить:

[receive]
        denyDeleteCurrent = warn

в конфигурацию.

Более простой вариант - простоизменить ветку по умолчанию.Перейдите к вашему хранилищу в веб-интерфейсе Gitorious, нажмите «Изменить хранилище» и установите «Голова.После этого вы можете удалить основную ветку.

1 голос
/ 06 января 2012

В идеале вы хотите настроить отслеживание, поэтому сделайте это:

git push origin HEAD:release
git checkout --track origin/release

Теперь, вы хотите удалить остальные?

git branch -d master
git push origin :master

Simple!

...