web-dev-qa-db-fra.com

Travailler en attendant un PR en attente

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?

49

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:

  1. Ouvrir la demande d'extraction pour user_story_1:

      * (user_story_1)
      *
     /
    * (master)
    *
    *
    
  2. 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)
    *
    *
    
  3. Travaux sur la nouvelle branche:

      * (user_story_2)
      *      
      * (user_story_1)
      *
     /
    * (master)
    *
    *
    
  4. La demande de tirage est fusionnée:

      * (user_story_2)
      *      
    * | (master)
    |\|
    | * (user_story_1)
    | *
    |/
    *
    *
    *
    
  5. Supprimer l'ancienne branche:

      * (user_story_2)
      *      
    * | (master)
    |\|
    | *
    | *
    |/
    *
    *
    *
    
  6. Rebase une nouvelle branche sur master:

      * (user_story_2)
      *      
     /
    * (master)
    |\
    | *
    | *
    |/
    *
    *
    *
    
59
alextercete

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.

6

Mon flux de travail préféré pour cela:

  1. Sur le maître de succursale, git checkout -b user_story_1.
  2. Apportez des modifications à user_story_1.
  3. Ouvrez PR pour user_story_1.
  4. Sur la branche user_story_1, git checkout -b user_story_2.
  5. Apportez des modifications à user_story_2.
  6. Une fois que user_story_1 est fusionné dans master, passez à user_story_2 et fait git rebase -i master.
  7. Cela devrait vous montrer une liste de commits sur user_story_2 que vous souhaitez inclure dans le rebase. Supprimez les quelques commits supérieurs provenant de user_story_1.
  8. Le rebase doit se terminer correctement sauf si le maître a été mis à jour avec d'autres modifications. Maintenant vous avez user_story_2 rebasé sur master et n'ayant que ses validations.
1
Athyuttam Eleti