私はプロジェクトに取り組んでおり、最初のプルリクエストを送信しましたが、待っている間、まだ保留中のマージで作業していたものから、プロジェクトのビルドを続けたいと思っています。今私は持っています:
*master
user_story_1
user_story_1
にはオープンプルリクエストがあります。
今、私は新しいブランチを作成しようとしていますuser_story_2
私が残した仕事を続行できる場所user_story_1
。競合や保留中のマージに影響を与えることなく、Gitでこれを行うにはどうすればよいですか?
user_story_2
で行った作業に加えて、新しいuser_story_1
ブランチを開始することを想定しています。この種のシナリオで使用するワークフローは次のとおりです。
user_story_1
のプルリクエストを開く:
* (user_story_1)
*
/
* (master)
*
*
user_story_2
に基づいて新しいブランチuser_story_1
を作成します。
$ git checkout -b user_story_2 user_story_1
* (user_story_1, user_story_2)
*
/
* (master)
*
*
新しいブランチで作業します。
* (user_story_2)
*
* (user_story_1)
*
/
* (master)
*
*
プルリクエストがマージされます:
* (user_story_2)
*
* | (master)
|\|
| * (user_story_1)
| *
|/
*
*
*
古いブランチを削除:
* (user_story_2)
*
* | (master)
|\|
| *
| *
|/
*
*
*
新しいブランチをmaster
にリベースします:
* (user_story_2)
*
/
* (master)
|\
| *
| *
|/
*
*
*
ストーリー/機能ごとにマスターから新しいブランチを作成します。
各ブランチをマージして戻す前に、マスターをそのブランチにマージするか、ブランチをマスターにリベースします。後者には私の好みがありますが、最終的には結果は同じです。
あなたは対立するでしょう、それを回避する方法はありません。ただし、ブランチの競合を解決する必要があります。マスターではありません。この方法で、競合を解決した後でブランチをテストできますbeforeブランチをmasterにマージします。
これに対する私の優先ワークフロー:
git checkout -b user_story_1
。user_story_1
に変更を加えます。user_story_1
のPRを開きます。user_story_1
、git checkout -b user_story_2
。user_story_2
に変更を加えます。user_story_1
がマスターにマージされたら、user_story_2
に切り替えてgit rebase -i master
を実行します。user_story_2
のコミットのリストが表示されます。 user_story_1
からのコミットの上位数件を削除します。user_story_2
がmasterにリベースされ、コミットのみを持つようになりました。