Je travaille sur un projet et j'ai soumis ma première demande de pull et pendant que j'attends, je veux continuer à travailler sur mon projet à partir de ce que j'ai travaillé sur la fusion qui est toujours en attente. En ce moment, j'ai:
*master
user_story_1
user_story_1
a une demande d'extraction ouverte.
J'essaie maintenant de créer une nouvelle branche user_story_2
où je peux continuer le travail qui me reste à user_story_1
. Comment puis-je le faire dans Git sans entrer en conflit ni affecter ma fusion en attente?
Je suppose que vous voulez démarrer le nouveau user_story_2
branchez sur le travail que vous avez fait dans user_story_1
. Voici le flux de travail que j'utilise dans ce genre de scénario:
Ouvrir la demande d'extraction pour user_story_1
:
* (user_story_1)
*
/
* (master)
*
*
Créer une nouvelle branche user_story_2
basé sur user_story_1
:
$ git checkout -b user_story_2 user_story_1
* (user_story_1, user_story_2)
*
/
* (master)
*
*
Travaux sur la nouvelle branche:
* (user_story_2)
*
* (user_story_1)
*
/
* (master)
*
*
La demande de tirage est fusionnée:
* (user_story_2)
*
* | (master)
|\|
| * (user_story_1)
| *
|/
*
*
*
Supprimer l'ancienne branche:
* (user_story_2)
*
* | (master)
|\|
| *
| *
|/
*
*
*
Rebase une nouvelle branche sur master
:
* (user_story_2)
*
/
* (master)
|\
| *
| *
|/
*
*
*
Créez une nouvelle branche de master pour chacune de vos histoires/fonctionnalités.
Avant de fusionner chaque branche, fusionnez le master dans cette branche ou rebasez votre branche sur le master. Ce dernier a ma préférence, mais au final le résultat est le même.
Vous allez avoir des conflits, il n'y a aucun moyen de contourner cela. Cependant, vous souhaitez résoudre les conflits dans votre branche; pas en maître. De cette façon, vous pouvez tester votre branche après avoir résolu les conflits avant la fusionner en master.
Mon flux de travail préféré pour cela:
git checkout -b user_story_1
.user_story_1
.user_story_1
.user_story_1
, git checkout -b user_story_2
.user_story_2
.user_story_1
est fusionné dans master, passez à user_story_2
et fait git rebase -i master
.user_story_2
que vous souhaitez inclure dans le rebase. Supprimez les quelques commits supérieurs provenant de user_story_1
.user_story_2
rebasé sur master et n'ayant que ses validations.