J'ai un référentiel distant que j'ai extrait et à partir duquel je fais des branchements. Je veux garder la nouvelle branche à jour avec les modifications apportées au master. Je pense au flux de travail ci-dessous, est-ce logique ou existe-t-il de meilleures façons de le faire?
Branchement initial et paiement:
git checkout master
git pull
git checkout -b my_branch
Faites un peu de travail dans my_branch
, puis périodiquement:
git checkout master
git pull
git checkout my_branch
git merge master --no-ff
Répétez l'étape 2 si nécessaire, en poussant périodiquement vers la télécommande my_branch
.
Ensuite, lorsque vous êtes prêt pour une fusion de retour:
git checkout master
git merge my_branch --no-ff
Ça va?
Vous pouvez simplifier vos commandes:
1.
git fetch
git checkout -b my_branch Origin/master
2.
git fetch
git merge Origin/master
git fetch
met à jour vos branches distantes, il n'est généralement pas nécessaire d'avoir une copie locale d'une branche lorsque vous ne prévoyez pas de travailler sur cette branche.
Vous pouvez omettre le --no-ff
après le réglage git config --global merge.ff false
.
git help config
dit:
merge.ff
By default, Git does not create an extra merge commit when merging
a commit that is a descendant of the current commit. Instead, the
tip of the current branch is fast-forwarded. When set to false,
this variable tells Git to create an extra merge commit in such a
case (equivalent to giving the --no-ff option from the command
line). When set to only, only such fast-forward merges are allowed
(equivalent to giving the --ff-only option from the command line).
Soit conscient que git pull
n'est qu'une combinaison de git fetch
et git merge
.
Habituellement, vous voulez juste git pull --rebase
qui est essentiellement git fetch
plus git rebase
, et crée une histoire beaucoup plus nette.
Y a-t-il une raison à vos "poussées périodiques"? Si personne d'autre ne travaille sur la même branche, ce serait parfaitement bien, juste de pousser après avoir tout fini.
Je conseillerais d'utiliser un workflow de rebase. Donc, au lieu d'utiliser git pull
Tu devrais utiliser git pull --rebase
.
Je ferais de même avec la branche fonctionnalité. Donc, au lieu de faire un git merge master --no-ff
J'utiliserais un git rebase master
. Cependant, si la branche de fonctionnalité est destinée à être partagée avec des collègues pendant le développement, il est préférable de fusionner périodiquement la branche principale dans la branche de fonctionnalité.
Mais pour être honnête, je travaille dans une petite équipe et si nous devons travailler ensemble sur une branche de fonctionnalités et que nous devons la mettre à jour avec le maître, nous suspendons simplement notre travail pendant un court instant (et communiquons le processus clairement) , rebaser sur le maître et forcer Appuyez sur la branche de fonction. Mais oui, cela ne s'adapte pas aux grandes équipes. Cependant, je trouve qu'il est beaucoup plus pratique de travailler avec une branche de fonctionnalité qui est rebasée sur le maître au lieu d'avoir à gérer les fusions du maître.
Assurez-vous de lire ceci.