IDEA Git Cherry-Pick(チェリーピッキング)ブランチ提出の一部が開発にマージされます

Git Cherry-pick、通常はチェリーピッキングと呼ばれます。これはGitの操作であり、コードの一部をあるブランチから別のブランチに転送するために使用されます。

通常の状況では、git merge同じ方法を使用し て2つのブランチのコードをマージします。この状況は、別のブランチで必要なすべてのコード変更(ブランチが作成される前のベースコードを含む)に当てはまります。

もう1つの状況は、いくつかのコード変更(いくつかのコミット)のみが必要な場合、Cherrypickを使用できることです。

 

操作手順を説明する例を次に示します。

同じプロジェクトに取り組んでいるAとBの2つの開発チームがあり、開発側はバージョン要件を受け取ります。2020年1月21日にオンラインにする必要があると想定されます。Aは財務関連機能用で、Bは財務関連機能用です。サービス関連の機能用です。

チームAは、十分な時間があるため、予定より早く開発に参加し、1月8日にdevからdev-finance-20210121という名前の新しいブランチを作成しました。

食事の操作後、1月12日にチームAが開発を完了したため、dev-finance-20210121ブランチがmergeメソッドを介してdevブランチにマージされました。

1月13日、この時点で、チームBは手元にあるもので忙しく、開発段階に入ったため、devから別のブランチを作成し、dev-service-20210121という名前を付けました。注:この時点で作成されたブランチには、チームAによって送信されたコンテンツが含まれています。

1月15日にBチームも開発を完了したため、dev-service-20210121ブランチはmergeメソッドを介してdevブランチにマージされました。

 

両側での開発が完了したら、テストが正しくなるのを待つだけです。

しかし、突然1月16日、証明書利用者の遅延によりチームAがオンラインになりませんでした。製品は合意され、ロールバックする必要がありました。そして、Bチームの機能は正常にオンラインになります。

次に、開発コード全体を未開発バージョンにロールバックする必要があります。duang duang duang、ロールバックが成功しました!

この時点で、devブランチで、Aチームによって送信されたコードが欠落しています。問題ありません。しかし、チームBから提出されたコードがなければ、これはどのように機能しますか?Bはオンラインにする必要があります。

マージメソッドを使用して、dev-service-20210121ブランチをdevブランチに再度マージしますか?

いいえ、dev-service-20210121ブランチは、チームAが送信した後に作成され、チームAが送信したコードが含まれています。これにより、チームAが送信したコンテンツ全体が表示されます。 

ブランチを再構築してから、以前の変更をコードごとにコピーすると、機能せず、面倒で、見逃しやすくなります。

どうやるか?ねえ、現時点ではチェリーピックが機能します。

 

dev-service-20210121ブランチのチェリーピックをdevブランチに直接選択することは可能ですが、テスト段階で開発を変更する必要があります。変更するたびにチェリーピックですか?これは面倒です。

この時点で、新しいブランチ+チェリーピックメソッドが使用され、次にマージメソッドを使用できます。

したがって、1月17日に、チームBはdevからdev-service-20210121-newという名前の新しいブランチを再度作成しました。注:この時点で作成されたブランチには、devブランチがロールバックされているため、チームAによって送信されたコンテンツは含まれていません。

チームBは、チェリーピック方式を使用して、dev-service-20210121ブランチで送信されたパーツをdev-service-20210121-newブランチにマージしました。

次に、dev-service-20210121-newブランチをdevブランチにマージします。現時点では、devブランチにはBチームから送信されたコンテンツのみが含まれていることがわかります。

dev-service-20210121ブランチを破棄すると、Bチームはdev-service-20210121-newブランチのバグを変更します。バグが変更された後、devブランチにマージするときに、マージしてマージする必要があります。 。

 

どうやるか?次の例を参考にしてください。

1.モジュール名を右クリックして、プロジェクトを新しいブランチdev-service-20210121-newに切り替えます。 

2. git Logを開き、モジュールのgit Logウィンドウを見つけ、selectを選択して、元のdev-service-20210121ブランチにクエリを実行します。

 

3.送信履歴から、マージする必要のある送信コンテンツを選択し、右クリックしてチェリーピックを選択します。(競合がある場合は、新しいブランチに切り替えた後、コードをローカルで変更したが送信しなかったことを意味します。この時点で、競合を解決する必要があります)

4.このようにして、元のdev-service-20210121ブランチに必要な送信がローカルにマージされます。もちろん、これはローカルのみです。新しいブランチdev-service-20210121-newにマージする場合は、モジュールを右クリックしてプッシュする必要もあります(ローカルコード部分へのチェリーピックはデフォルトで送信されますが、コミットする必要はありません)。

5.これがすべて完了したら、新しいブランチdev-service-20210121-newからdevブランチに自由にマージできます(チームAによって送信されたコンテンツなしで)。テストフェーズにバグがある場合は、変更するコードもdev-service-20210121-newで変更する必要があります。

 

これまでのところ、Git Cherry-Pick(チェリーピッキング)方式により、一部の機能のみを起動するという要件が満たされています。

 

おすすめ

転載: blog.csdn.net/u012660464/article/details/112685800