2017-03-22 14 views
0

2人の開発者が別々の作業を行っていて、両方ともdevelopを統合ブランチ(gitflowを使用)として使用していたチームでは、開発者の仕事の1つが不完全であることが判明しました(ただし、このジョブは現在のリリースではプログラムされていません)もう1つは完了です(このリリースは現在のリリース用にプログラムされています)。大量のコミットをチェリーピックする方法を教えてください。

現在、私はチェリーをしようとしていますが、現在のリリースで変更がプログラムされている開発者のコ​​ミットをすべて選択しようとしています。私の最初の考えは、彼が提出したプルリクエストのコミットをチェリーにすることでしたが、チェリーピックパラメータの親は混乱しており、またいくつかの矛盾が生じます。

マージコミット自体をチェリーピックすることによって発生したこれらの競合を修正するのには価値があるのか​​、それとも1つずつチェリーピックするのかはわかりません。

+0

それは通常、このようなチェリーピック多くのコミットに間違いだが(それが将来不幸のためにあなたを設定し)、*または*をチェリー - マージ(同じ効果)を選択します。いずれにしても、*プルリクエスト*は単に「私、開発者D、あなたのためのもの」を意味します。インテグレータとしては、彼のもの(彼のコミット)をD * re-base *( 'git rebase')にして、簡単に' git merge 'するような状況にする必要があります。それが完了したい。彼は*物を書いているし、おそらくよりよいアイデアを持っているかもしれないので、衝突を修正して修正する方法は、通常は賢明です。 – torek

+0

これはおそらくより良いアプローチです。私はこのようなことを処理するためにgitワークフローを調整する必要があると確信しています(?)。少なくとも、あなたが既に不安定な開発枝を持っていれば、どうしたらいいですか?あなたのリリースは間もなく始まっていますか? –

+0

私たちは実際に(以前の$ jobで)それを持っていました。私たちがしたことは、リリースと大量選択のためのブランチを作成することでした。それは悪夢でした。特に、人々に良い1行コミットの対象を使用させるのが難しく、大量選択することを*知っていることを知るのが非常に難しいためです。 – torek

答えて

0

ライナーを書くと、「欠落している」リビジョンがすべて開発者から取得され、1つずつチェリーピックアップされます(おそらく競合するものをレポートして削除します)。

大雑把にこの(確認のため、取り残さ詳細の多く)のようなもの:

git log --pretty=%h whatever-conditions-to-get-list-of-revisions | while read revision; do git cherry-pick $revision; if [ $? -ne 0 ]; then echo "Revision $revision failed to be cherry picked.... stopping"; break; fi; done

関連する問題