私は git-svn を使用して、職場で Subversion リポジトリとやり取りしています。新しい機能に取り組むためにブランチ (FeatureBranch と呼びましょう) を作成しましたが、別の作業を行うためにマスター ブランチに戻らなければなりませんでした。FeatureBranch で行われるはずだった作業を開始したとき、FeatureBranch をもう一度チェックアウトするのを忘れて、自分が何をしたかを理解する前に master ブランチにいくつかのコミットを行いました。
私は当初、これを修正するために次のことを計画していました (Subversion への変更をまだコミットしていないため、それらはすべて、私が行った最新のコミットとしてグループ化されています)。
git checkout FeatureBranch
git merge master
git checkout master
git reset --hard HEAD~n
ここで、nは、現在 FeatureBranch にあるため、マスター ブランチから削除するコミットの数です。ただし、git mergeは、別のブランチにマージするときに履歴を保持していないようです (単一のコミットとして表示されます)。履歴を保持しながら、git の特定のコミットのみを別のブランチにマージするにはどうすればよいですか? チェリーピックという言葉を聞いたことがありますが、これは検討すべき機能ですか?