web-dev-qa-db-ja.com

さまざまなコミットをサブディレクトリまたはサブツリーにチェリーピックしてスカッシュする

チェリーピックがつぶれた範囲のコミットを選択するように指示するにはどうすればよいですか?

または、言い換えると、2つのコミット間の差分をリポジトリの現在の状態に適用しますか?

以下はnot動作します(cherry-pickには--squashオプションはありません):

git cherry-pick --squash e064480..eab48b59c

注:私のユースケースはサブツリーシナリオ内です-誰かが私がつぶすべきでないと主張する前に。

次のように動作しますが、その後、さまざまなコミットがあります。後でインタラクティブなリベースでそれらを手動で押しつぶすことができます。

git cherry-pick -X subtree=vendor/package e064480..eab48b59c

チェリーピックの一部としてつぶす方法はありますか?

45
donquixote

パス -nからgit cherry-pick。これにより、すべてのコミットが適用されますが、コミットはされません。その後、単にgit commit単一のコミットですべての変更をコミットします。

73
David Deutsch