私は git の初心者で、git cherry-pick がどのように機能するかは理解していますが、ここに私の問題があります。
最近、私のチームの誰かがマスターのディレクトリ構造を変更しましたが、別のブランチのディレクトリ構造は変更しませんでした。
今、ブランチでコードに変更を加えた場合、それらを (チェリーピック) マスターに取り込みたいと考えています。マスターとブランチの両方のディレクトリ構造が同じになるまで、これは問題ありませんでした。
topDir/some/subdir/file -- マスター
topDir/some/other/subdir/file -- ブランチ
変更がマスターに取り込まれるファイルは同じですが、それが含まれているディレクトリ構造は同じではありません。通常の方法でチェリーピックを実行しようとすると、次の行に沿ってエラーが発生します。
git checkout master git cherry-pick commit error: pathspec topDir/some/other/subdir/file が存在しません
さて、このシナリオでチェリーピッキングを行う最善の方法は何ですか? どんな指針も高く評価されます。
わかった。同じシナリオで、cherry-pick を実行すると、git は実際にコミットからファイルの 1 つを正しく選択するのに十分なほどスマートですが、他のファイルを認識しないことに気付きました。
元の投稿で述べたのと同じ例を使用するには、同じコミットで、topDir/some/subdir/file1、topDir/some/subdir1/file2.
「file1」と「file2」を持つ master に移動しますが、異なるディレクトリ構造: topDir/src/some/subdir/file1 topDir/src/some/subdir1/file2 です。
ここで、チェリーピックを行うと、git は file1 の変更を取得するのに十分なほどインテリジェントですが、これは別のディレクトリ構造にありますが、file2 の変更は取得しません。ポインタはありますか?誰かが私にもっと明確にしてほしいと思ったら、私は喜んでそうします。
したがって、問題を回避するために私がしたことは、チェリーピックを行い、git が検出しなかったものを手動で変更し、「git commit -C .