J'ai un dépôt nu qui est utilisé comme magasin central pour mon projet. Tous les développeurs font git clone <repo>
pour partager avec lui. Quand ils font le clone, ils obtiennent une caisse de la branche principale (à moins qu'ils ne git clone -n
) car repo.git/HEAD
contient ref: refs/heads/master
, ce qui représente la Direction active.Git: Manière correcte de changer Active Branch dans un référentiel nu?
La question est, comment puis-je changer le Active Branch correctement? Je pourrais simplement pirater le fichier repo.git/HEAD
directement, mais cela semble méchant et, bien, hacky.
J'ai essayé de faire git checkout <otherbranch>
dans le répertoire repo .git
, mais cela a échoué car je n'étais pas dans un arbre de travail.
J'ai essayé git update-ref HEAD refs/heads/otherbranch
mais refs juste mis à jour/têtes/maître être le même que refs/heads/otherbranch (d'accord, je l'ai fait un dans un dépôt factice, pas ma seule production!)
j'ai essayé git update-ref --no-deref HEAD refs/heads/otherbranch
et cela a presque fonctionné. Il a mis à jour le fichier HEAD
, mais il l'a défini sur le SHA1 de la validation pointé par refs/heads/otherbranch
.
Je teste la version git 1.7.0.2.msysgit.0
.
Je devine qu'il n'y a pas moyen de le faire à travers git push
, en permettant tout le monde pour changer votre branche par défaut semble un peu dangereux (!), Mais sûrement il y a une meilleure façon de le faire dans le répertoire repo .git
que piratage direct du fichier HEAD
.
IMO vous essayez fondamentalement de faire The Wrong Thing ici. Si vous voulez que la branche par défaut soit différente de master, cette branche doit être le maître. Vous pouvez également utiliser deux référentiels différents. –
Comment est-ce fondamentalement essayer de faire la mauvaise chose ici? Un référentiel nu prend en charge plusieurs branches. J'utilise un dépôt nu comme sauvegarde de mon dépôt local, et en tant que tel, je représente les branches. J'ai un master sur les deux et une branche de développement sur les deux. Si je veux voir le journal de la branche de développement sur le référentiel nu, je dois pirater les fichiers - semble que git est fondamentalement faux ici en ce qui concerne le support de référentiel nu. – Cthutu
@NicholasKnight IMHO vous avez fondamentalement tort ici. Il n'y a rien de spécial à propos de "master" en tant que nom de branche, c'est juste un défaut. Dans les respositories qui gèrent, nous n'avons pas de branche master, car "master" n'a pas de signification pour l'entreprise. Chaque fois que nous faisons une version, nous créons une nouvelle branche de maintenance avec le nouveau numéro de version, et l'assignons comme branche active. – Spacemoose