J'ai ma branche master
et une branche develop
pour avoir travaillé sur quelques modifications. J'ai besoin de fusionner les changements de master
dans develop
, mais finira par tout fusionner de develop
à master
. J'ai deux flux de travail différents en tête:
git pull Origin master
dans la branche develop
git merge master
dans la branche develop
Quelle est la meilleure façon de faire cela et pourquoi?
Soyez prudent avec rebase. Si vous partagez votre branche de développement avec qui que ce soit, rebase peut tout gâcher. Rebase n'est valable que pour vos propres succursales locales.
En règle générale, si vous avez poussé la branche vers Origin, n'utilisez pas de rebase. Au lieu de cela, utilisez la fusion.
Ce workflow fonctionne le mieux pour moi:
git checkout -b develop
... faire des changements ...
... le maître des avis a été mis à jour ...
... engager des changements pour développer ...
git checkout master
git pull
... ramener ces changements dans le développement ...
git checkout develop
git rebase master
... faire d'autres changements ...
... engagez-les à développer ...
... les fusionner en maître ...
git checkout master
git pull
git merge develop
La meilleure approche pour ce genre de chose est probablement git rebase
. Il vous permet d'extraire les modifications du maître dans votre branche de développement, mais de laisser tout votre travail de développement "par-dessus" (plus tard dans le journal de validation) les éléments du maître. Lorsque votre nouveau travail est terminé, la fusion avec le maître est alors très simple.
Si vous ne partagez pas la branche develop avec qui que ce soit, je redéfinirais la base à chaque fois que le master serait mis à jour. De cette manière, vous ne ferez plus de commits de fusion dans votre historique une fois que vous fusionnerez. Le flux de travail dans ce cas serait comme suit:
> git clone git://<remote_repo_path>/ <local_repo>
> cd <local_repo>
> git checkout -b develop
....do a lot of work on develop
....do all the commits
> git pull Origin master
> git rebase master develop
Les étapes ci-dessus garantiront que votre branche de développement sera toujours au courant des dernières modifications de la branche principale. Une fois que vous avez terminé avec develop branche et que les modifications les plus récentes ont été modifiées sur le maître, vous pouvez simplement le fusionner:
> git checkout -b master
> git merge develop
> git branch -d develop
ma règle est la suivante:
rebase
pour les branches avec le même nom,merge
sinon.
des exemples pour les mêmes noms seraient master
, Origin/master
et otherRemote/master
.
si develop
n'existe que dans le référentiel local et qu'il est toujours basé sur un commit récent Origin/master
, vous devez l'appeler master
et y travailler directement. cela simplifie votre vie et présente les choses telles qu’elles sont: vous développez directement sur la branche master
.
si develop
est partagé, il ne devrait pas être rebasé sur master
, mais simplement fusionné avec --no-ff
. vous développez sur develop
. master
et develop
ont des noms différents, car nous voulons que ce soient des choses différentes et restons séparés. ne les faites pas de même avec rebase
.