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