12

git cherry-pick Xいくつかの競合が発生する状況に遭遇しましたが、余分な挿入も作成しました (で確認した場合git diff)。

次に、 を再実行git show X > my.patchpatch -p1 < my.patch、ツリーで実行しました。より良い結果が得られ、いくつかの競合がありましたが、よりクリーンな結果が得られました。

git はチェリーピックで何が特別なのですか? 私はgit 1.7.0.4を使用しています。

編集:git show Xよりクリーンな結果とは、結果のツリーがより多くのコードを含んでいるのに対し、 より多くの結果に一致したことを意味しgit cherry-pickます。

4

2 に答える 2

9

コミットをチェリーピックすると、コミットが表す差分だけでなく、コミットのすべてのメタデータを使用して結果がコミットされます。元のコミットメッセージと作成者が取得されます。パッチ パイプラインは、必要な作業ツリーのコンテンツを取得しますが、できれば、git commit -c <original-commit>cherry-pick のようなメタデータをコピーして、自分でコミットする必要があります。Cherry-pick には、役立つ追加オプションがいくつかあり、複数のコミットを受け入れることができます (おそらく rev-list 範囲として指定されます)。patch明らかにそれをサポートしていません。

結果が「よりきれい」だったというあなたの主張についてはよくわかりません。git が diff を適用したのとは異なる方法で適用したことを示唆してpatchいますか?

于 2011-03-01T16:03:25.793 に答える
1

これは役立つかもしれません:

http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html

部分的に話題から外れているかもしれませんが、ご覧のとおり、チェリー ピッキングは何らかの方法でコード全体のコード ブロックを追跡しているように見えます。これは、おそらく 2 つのコードベースを順番に並べて解析するだけで、パッチが行うと推測するものよりもはるかに高度です。側、および異なるラインをマークします。

于 2013-10-28T17:37:04.887 に答える