125 votes

Une façon plus simple de maintenir à jour une branche de fonctionnalités git

Je me demandais si quelqu'un avait une meilleure suggestion pour garder une branche de fonctionnalité synchronisée avec sa branche mère.

Nous avons généralement plusieurs branches de fonctionnalités sur lesquelles nous travaillons en même temps, chacune d'entre elles étant dérivée de notre develop branche. Il est assez courant que les branches de fonctionnalités soient fusionnées dans des branches de develop plusieurs fois par jour.

Afin de rester au fait des changements (c'est-à-dire de résoudre les conflits), je constate que je dois tenir à jour les branches de fonctionnalités sur lesquelles je travaille activement à l'aide des éléments suivants develop .

Pour ce faire, j'exécute ces commandes plusieurs fois par jour :

git checkout develop
git pull
git checkout feature/foo 
git merge develop 
git push

Le dernier git push Je ne le fais généralement que si je travaille avec quelqu'un d'autre sur la branche des fonctionnalités.

Existe-t-il un meilleur moyen ou un moyen plus pratique de procéder ?

113voto

Wes Hardaker Points 10426

Eh bien, git est vraiment conçu pour envelopper les choses que vous faites fréquemment dans un script et ensuite appeler le script à la place. Il n'y a pas un grand nombre de variantes de ce qui précède. Elles nécessiteront toutes de tirer la branche amont, et d'intégrer vos changements à ceux de la branche amont. Certaines choses qui peuvent raccourcir le processus pour vous peuvent être :

git checkout feature/foo
git fetch --all
git merge --into-name=develop origin/develop
git rebase develop

De cette façon, vous pouvez simplement extraire toutes les branches en amont en une seule fois sans passer à l'autre branche. Le rebasage est une opération que vous pouvez préférer à la fusion, mais c'est souvent un choix personnel qui dépend de l'aspect que vous voulez donner à l'historique.

39voto

Barnabas Szabolcs Points 4109

Pourquoi ne pas créer un script qui exécuterait les commandes ?

Créer merge-develop.sh avec texte

#!/bin/bash
git checkout develop
git pull
git checkout feature/$1
git merge develop 
git push

Il suffit ensuite de lancer merge-develop.sh foo .

5voto

nomadoda Points 353

Une autre option consiste à récupérer les données avec la cible, ce qui vous permet de développer sans passer par la caisse :

git checkout feature/foo
git fetch origin develop:develop
git rebase develop

0voto

Voici ce que je trouve si facile à utiliser

 1. git checkout develop
 2. git pull
 3. git checkout -b feature/foo
 4. git push

Le numéro 3 crée la nouvelle branche à partir de develop et ensuite checkout vers elle... le tout en une seule ligne. Personnellement, je préfère cela.

0voto

Manas Points 54
  1. git checkout develop/*
  2. git pull
  3. git checkout feature/*
  4. git merge develop
  5. git push

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X