У меня есть пустой репозиторий, это используется в качестве центрального хранилища для моего проекта. Все разработчики делают git clone <repo>
совместно использовать с ним. Когда они делают клон, они получают контроль основного ответвления (если они не делают git clone -n
) потому что repo.git/HEAD
содержит ref: refs/heads/master
, создание этого Активное Ответвление.
Вопрос, как я изменяю Активное Ответвление правильно? Я мог просто взломать repo.git/HEAD
зарегистрируйте непосредственно, но это кажется противным и, ну, в общем, hacky.
Я пытался делать git checkout <otherbranch>
в repo .git
каталог, но это перестало работать, потому что я не был в дереве работы.
Я попробовал git update-ref HEAD refs/heads/otherbranch
но это просто обновило судей/головы/ведущее устройство для совпадения с refs/heads/otherbranch (хорошо, я сделал тот в фиктивном репозитории, не мое производство один!)
Я попробовал git update-ref --no-deref HEAD refs/heads/otherbranch
и это почти работало. Это обновило HEAD
файл, но это установило его на SHA1 фиксации, которой указывают refs/heads/otherbranch
.
Я тестирую с версией мерзавца 1.7.0.2.msysgit.0
.
Я предполагаю, что нет никакого способа сделать это через git push
, как разрешение все до одного изменить Ваше ответвление по умолчанию кажутся немного небезопасными (!), но конечно существует лучший способ сделать это в repo .git
каталог, чем прямое взламывание HEAD
файл.
Если у вас есть доступ к удаленному голому репозиторию, в этой статье предлагается :
git symbolic-ref HEAD refs/heads/mybranch
который обновит файл HEAD в вашем репозитории, чтобы он содержал:
ref: refs/heads/mybranch
, как описано в git-symbolic-ref
. Если у вас нет доступа к удаленному репо, см. мой предыдущий ответ .
Помните, что команда типа git remote set-head
:
не изменяет ветвь по умолчанию для репозитория remote .
Он изменяет только ветку удаленного отслеживания , хранящуюся в вашем локальном репозитории, поскольку refs / remotes /
не меняет HEAD
] (опять же, только refs / remotes /
), следовательно, необходимость в
git symbolic-ref
.
Итак, git remote set-head
не ответ здесь.
git symbolic-ref HEAD
есть, если у вас есть прямой доступ к удаленному репо.