Puis-je mapper des branches locales sur des branches distantes avec différents préfixes dans git?

StackOverflow https://stackoverflow.com/questions/167697

  •  03-07-2019
  •  | 
  •  

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.

Était-ce utile?

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 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top