2

私は 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 の特定のコミットのみを別のブランチにマージするにはどうすればよいですか? チェリーピックという言葉を聞いたことがありますが、これは検討すべき機能ですか?

4

2 に答える 2

2

はい、これには git cherry-pick を使用することをお勧めします。マスターに戻したい各コミットを文字通りチェリーピックします。

チェリーピックプロセス全体を説明することなく、ここにあなたが始めるためのいくつかのドキュメントがあります

于 2013-06-26T17:08:41.660 に答える