Il n'y avait presque la même question sur GitHub, il y a un an.
L'idée était de renommer la branche master:
git branch -m master development
git branch -m published master
git push origin master
Maître de la fabrication de ce que vous voulez que les gens à l'utiliser, et d'accomplir tout autre travail dans les branches.
( " git-symbolic-ref HEAD refs/head/published
" ne serait pas propagé à la distance repo)
Comme dit dans ce thread: (l'emphase est mienne)
"git clone
" ne crée qu'une seule succursale.
Pour ce faire, il examine l' HEAD ref
de la distance repo, et crée une filiale locale avec le même nom que la branche distante référencé par elle.
Donc, pour envelopper, vous avez des pensions de Un et de le cloner:
HEAD
références refs/heads/master
et qui existe
-> vous obtenez un local de la branche master, à partir de origin/master
TÊTE de références refs/heads/anotherBranch
et qui existe
-> vous obtenez une branche locale appelée anotherBranch
, à partir de origin/anotherBranch
TÊTE de références refs/heads/master
et qui n'existe pas
-> "git clone", se plaint
Vous ne savez pas si il y a moyen de modifier directement l' HEAD
ref dans une pension.
(qui est le point de votre question, je sais ;) )
Peut-être le seul moyen serait une "publication pour les pauvres", où vous:
$ git-symbolic-ref HEAD refs/head/published
$ git-update-server-info
$ rsync -az .git/* server:/local_path_to/git/myRepo.git/
Mais cela supposerait de l'accès en écriture pour le serveur, ce qui n'est pas toujours possible.
Comme je l'explique dans "Git: comment modifier la Branche Active dans un dépôt nu?", git remote set-head
ne changerait rien sur le repo distant.
Il ne ferait que changer le suivi à distance de la branche stockées localement dans votre local repo, en remotes/<name>/HEAD
.