J'ai ma master
branche et une develop
branche pour travailler sur quelques changements. J'ai besoin de fusionner les changements de master
en develop
, mais je fusionnerai finalement tout de develop
en master
. J'ai deux workflows différents en tête:
git pull origin master
endevelop
branchegit merge master
endevelop
branche
Quelle est la meilleure façon de procéder et pourquoi?
git pull
=git fetch
+git merge FETCH_HEAD
Réponses:
Soyez prudent avec rebase. Si vous partagez votre branche de développement avec qui que ce soit, le rebase peut gâcher les choses. Rebase n'est valable que pour vos propres succursales locales.
En règle générale, si vous avez poussé la branche à l'origine, n'utilisez pas de rebase. Utilisez plutôt la fusion.
la source
git push origin rebasedBranch --force
sur un repo privé? Le seul utilisateur est moi-même.Ce flux de travail fonctionne le mieux pour moi:
... apportez quelques modifications ...
... avis maître a été mis à jour ...
... engager des changements à développer ...
... ramener ces changements dans le développement ...
... apportons quelques modifications supplémentaires ...
... les engager à se développer ...
... les fusionner en maître ...
la source
git pull
juste avant la finalegit merge develop
. Quel est le but de cela?git pull --rebase origin master
sur votre branche de développement est un peu plus rapide.La meilleure approche pour ce genre de chose est probablement
git rebase
. Il vous permet d'extraire les modifications de master dans votre branche de développement, mais de laisser tout votre travail de développement "au-dessus" (plus tard dans le journal de validation) du stuff de master. Lorsque votre nouveau travail est terminé, la fusion avec Master est alors très simple.la source
develop
n'est partagé avec personne d'autre.develop
est partagé avec d'autres contributeurs, comment pourrions-nous mettredevelop
à jour lorsque certains correctifs ont été poussés directement versmaster
? Faut-il faire une fusion, c'est à diregit checkout master && git pull --rebase && git checkout develop && git merge master
? J'ai laissé un commentaire sur la réponse la plus votée ci-dessus, qui détaille également cette préoccupation.Si vous ne partagez pas la branche de développement avec quelqu'un, alors je la rebaserais à chaque fois que master est mis à jour, de cette façon vous n'aurez pas de commit de fusion partout dans votre historique une fois que vous fusionnerez develop de nouveau en master. Le workflow dans ce cas serait le suivant:
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 la branche de développement et qu'elle est rebasée aux dernières modifications sur le maître, vous pouvez simplement la fusionner à nouveau:
la source
ma règle d'or est la suivante:
des exemples pour les mêmes noms seraient
master
,origin/master
etotherRemote/master
.s'il
develop
n'existe que dans le référentiel local et qu'il est toujours basé sur uneorigin/master
validation récente , vous devez l'appelermaster
et y travailler directement. il vous simplifie la vie et présente les choses telles qu'elles sont: vous vous développez directement sur lamaster
branche.s'il
develop
est partagé, il ne doit pas être rebasémaster
, simplement fusionné avec--no-ff
. vous développez surdevelop
.master
etdevelop
ont des noms différents, parce que nous voulons qu'ils soient des choses différentes, et restent séparés. ne les faites pas de même avecrebase
.la source