web-dev-qa-db-ja.com

保留中のPRを待っている間に作業する

私はプロジェクトに取り組んでおり、最初のプルリクエストを送信しましたが、待っている間、まだ保留中のマージで作業していたものから、プロジェクトのビルドを続けたいと思っています。今私は持っています:

*master
user_story_1

user_story_1にはオープンプルリクエストがあります。

今、私は新しいブランチを作成しようとしていますuser_story_2私が残した仕事を続行できる場所user_story_1。競合や保留中のマージに影響を与えることなく、Gitでこれを行うにはどうすればよいですか?

49

user_story_2で行った作業に加えて、新しいuser_story_1ブランチを開始することを想定しています。この種のシナリオで使用するワークフローは次のとおりです。

  1. user_story_1のプルリクエストを開く:

      * (user_story_1)
      *
     /
    * (master)
    *
    *
    
  2. user_story_2に基づいて新しいブランチuser_story_1を作成します。

    $ git checkout -b user_story_2 user_story_1
      * (user_story_1, user_story_2)
      *
     /
    * (master)
    *
    *
    
  3. 新しいブランチで作業します。

      * (user_story_2)
      *      
      * (user_story_1)
      *
     /
    * (master)
    *
    *
    
  4. プルリクエストがマージされます:

      * (user_story_2)
      *      
    * | (master)
    |\|
    | * (user_story_1)
    | *
    |/
    *
    *
    *
    
  5. 古いブランチを削除:

      * (user_story_2)
      *      
    * | (master)
    |\|
    | *
    | *
    |/
    *
    *
    *
    
  6. 新しいブランチをmasterにリベースします:

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

ストーリー/機能ごとにマスターから新しいブランチを作成します。

各ブランチをマージして戻す前に、マスターをそのブランチにマージするか、ブランチをマスターにリベースします。後者には私の好みがありますが、最終的には結果は同じです。

あなたは対立するでしょう、それを回避する方法はありません。ただし、ブランチの競合を解決する必要があります。マスターではありません。この方法で、競合を解決した後でブランチをテストできますbeforeブランチをmasterにマージします。

6

これに対する私の優先ワークフロー:

  1. ブランチマスターで、git checkout -b user_story_1
  2. user_story_1に変更を加えます。
  3. user_story_1のPRを開きます。
  4. ブランチuser_story_1git checkout -b user_story_2
  5. user_story_2に変更を加えます。
  6. user_story_1がマスターにマージされたら、user_story_2に切り替えてgit rebase -i masterを実行します。
  7. これにより、リベースに含めるuser_story_2のコミットのリストが表示されます。 user_story_1からのコミットの上位数件を削除します。
  8. マスターが他の変更で更新されない限り、リベースは完全に完了するはずです。 user_story_2がmasterにリベースされ、コミットのみを持つようになりました。
1
Athyuttam Eleti