2016-08-26 9 views
0

私は長いスタンドのパッチブランチと開発ブランチを持っています。私はチェリーピックアップからパッチブランチまでの特定の変更を選択したい。ブランチ間でgit cherry-pickコミットを追跡するにはどうすればいいですか?

私が行ったとき、私は古いコミットへのリンクなしで新しいコミットを取得します。

コミットのブランチへの親リンクを選択して維持する方法はありますか?

は「-x」を追加していますか?

おかげ

+0

もう1つの方法は、必要なコミットを持つ中間ブランチを作成し、それをパッチブランチにマージすることです(不要なコミットを元に戻す)。 –

答えて

0

はい、-xは本当にインクルードあなたはチェリー選んだことをコミット参照するための唯一の方法です。

コミットの親関係を維持したい場合は、ブランチをマージする必要があります。私の推測では、パッチブランチと開発ブランチをマージして、作業を適切に分離しておきたいと思うでしょう。

あなたは質問を表現した方法に基づいていますが、あなたはコミットについて誤解を招くかもしれないと思います。彼らは支店への "リンク"を持っていません。むしろ、各コミットには、それらが指し示す単一の親コミットがあります。マージコミットには複数の親があり、どのマージがマージしているかを示します。ブランチは実際にコミットのポインタに過ぎません。コミットは複数のブランチ上に存在する可能性があります。これは、マージされているか、ブランチまたはそれ以降のコミットに基づいて新しいブランチを作成したためです。

git cherry-pickは、1つのブランチで行った変更のコピーを作成し、別の場所に適用します。これは、この特定の変更に伴って残りの履歴が残らないようにするためです。履歴を維持する場合は、あるブランチから別のブランチへの変更がgit mergeまたはgit rebaseになります。