132 votes

Changer une tête déportée de Git pour pointer vers autre chose que le maître

Comment puis-je configurer un Git remote social de référence pour pointer vers quelque chose de plus "maître"?

Mon projet a pour politique de ne pas utiliser un "maître" de la branche (toutes les branches ont des noms significatifs). En outre, la structure canonique référentiel maître, n'est accessible que via ssh://, avec pas d'accès shell (comme GitHub ou Unfuddle).

Mon problème est que le dépôt distant a encore une TÊTE de référence pour les refs/heads/master, mais j'en ai besoin pour pointer vers une autre branche. Cela pose deux problèmes:

  1. Pour cloner le repo, il y a ceci,

    avertissement: distance de la TÊTE se rapporte à inexistant ref, incapable de faire le paiement.

    C'est déroutant et peu pratique.

  2. L'basé sur le web navigateur de code dépend de la TÊTE, comme une base pour la navigation dans l'arborescence. J'ai besoin de la TÊTE au point de valable branche, puis.

66voto

VonC Points 414372

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.

48voto

jrhorn424 Points 638

Avec une version récente de git (février 2014), la procédure correcte serait :

``

Ainsi, par exemple, allumer la tête à distance à la direction générale de la serait :

``

36voto

srcspider Points 2623

Puisque vous parlez de GitHub, de le faire sur leur site tout simplement entrer dans votre projet, puis...

``

Fait.

20voto

mani-fresh Points 141

Voir : http://www.kernel.org/pub/software/scm/git/docs/git-symbolic-ref.html

Cette commande définit la direction par défaut dans le dépôt git. Vous pouvez exécuter ceci dans les référentiels nus ou en miroirs.

UTILISATION :

$ git symbolique-Réf tête refs/tête /

11voto

(Il y avait déjà fondamentalement la même question "créer un git symbolique réf dans le dépôt distant", qui n'a pas reçu de réponse universelle.)

Mais il y a des réponses spécifiques pour les différents git "fermes" (où plusieurs utilisateurs peuvent gérer git repos par une restriction de l'interface: via http et ssh): http://Github.com, http://Gitorious.org, http://repo.or.cz, Girar (http://git.altlinux.org).

Ces réponses peuvent être utiles pour ceux qui lisent cette page et de penser à ces services spécifiques.

par exemple ssh git.alt default-branch packages/autosshd.git sisyphus changer la TÊTE à la distance repo autosshd.git de point à l' sisyphus de la branche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X