Puis-je mapper des branches locales sur des branches distantes avec différents préfixes dans git?
Question
Nous travaillons avec un référentiel git semi-centralisé ici où je travaille. Chaque développeur a son propre sous-arbre dans le référentiel git central, il a donc l'aspect suivant:
master alice/branch1 alice/branch2 bob/branch1 michael/feature release/1.0 release/1.1
Dans mon arbre de travail, j’ai topic/feature
ce qui correspond à michael/feature
dans l’arbre central.
Je me sers de
git push origin topic/feature:michael/feature
pour appliquer mes modifications à l’arborescence distante. Cependant, cela est lourd et sujet à des erreurs (par exemple, omettre le nom du développeur, mal orthographier le nom de la fonctionnalité, etc.).
Je cherche une façon plus propre de faire cela. Par exemple, & Quot; git push
& Quot ;. Je soupçonne que définir une autre télécommande avec un fetch refspec modifié le fera, mais je ne sais pas exactement comment le faire. Je ne sais pas non plus comment modifier les définitions de ma branche actuelle pour utiliser les différentes télécommandes.
Mon courant .git/config
ressemble à quelque chose comme:
[remote "origin"] url = git://central/git/project fetch = +refs/heads/*:refs/remotes/origin/* [branch "topic/feature"] remote = origin merge = refs/heads/michael/project
Modifier: je voudrais également appliquer cela aux extractions / extractions. Mais est-ce que le branch.<name>.merge
s'en occupe?
Je continuerai à faire des recherches à ce sujet et posterai ici si je trouve quelque chose, mais j'espère avoir d'autres bonnes idées.
Modifier 2: j'ai décidé de conserver les mêmes noms de branches locales et distantes. Il semble que ce sera le moins de travail et le moins sujet aux problèmes futurs.
La solution
Si vous le pouvez, je vous suggère d'utiliser les mêmes noms de branche localement & amp; à distance. Ensuite, git push
déplacera toutes vos succursales locales dans les succursales correspondantes du référentiel central.
Pour utiliser différents préfixes dans les dépôts locaux et distants, vous devez ajouter un mappage à votre fichier de configuration chaque fois que vous créez une nouvelle branche. La commande permettant de configurer le mappage pour la rubrique / BRANCH_NAME est
. git config remote.origin.push refs/heads/topic/BRANCH_NAME:michael/BRANCH_NAME
Autres conseils
Dans votre section [remote " origin "], ajoutez une ligne par mappage. Y compris maître à maître.
push = refs/heads/master:master
push = refs/heads/topic/feature:michael/feature
Je ne sais pas comment faire avec la commande git-config.
Sachez qu'à partir de maintenant, toutes les branches sont poussées de la même manière lorsque vous faites un push direct (sans paramètre).
Voulez-vous expliquer pourquoi vous ne conservez pas les mêmes noms de branche localement et à distance?
Vous pouvez mapper votre branche sur une autre branche de suivi sur la télécommande avec quelque chose comme ceci:
git remote add heroku git@heroku.com:YOURAPPNAME.git
git checkout -b heroku -t heroku/master
Votre configuration est similaire à celle suggérée par @Paul (un peu & "plus simple &"; en fait).
Consultez cet élément essentiel (avec quelques modifications de ma part) pour connaître les étapes d'utilisation qui fonctionnent bien pour moi https: //gist.github .com / 2002048 .