707

master ブランチにいくつかの変更を加えたので、それらをアップストリームに持ち込みたいと考えています。次のコミットをチェリーピックすると。ただし、gitが言うfd9f578で立ち往生します:

$ git cherry-pick fd9f578
fatal: Commit fd9f57850f6b94b7906e5bbe51a0d75bf638c74d is a merge but no -m option was given.

git が私に伝えようとしているのは何ですか?ここで使用するのはチェリーピックが正しいですか? master ブランチには、upstream ブランチで変更されたファイルへの変更が含まれているため、マージの競合が発生することは確かですが、それらは解決するほど悪くはありません。どこでどの変更が必要かを知っています。

これらは、私がアップストリームに持ち込みたいコミットです。

e7d4cff added some comments...
23e6d2a moved static strings...
44cc65a incorporated test ...
40b83d5 whoops delete whitspace...
24f8a50 implemented global.c...
43651c3 cleaned up ...
068b2fe cleaned up version.c ...
fd9f578 Merge branch 'master' of ssh://extgit/git/sessions_common
4172caa cleaned up comments in sessions.c ...
4

5 に答える 5

776

チェリーピックが機能する方法は、チェンジセットが表す差分(その時点での作業ツリーとその親の作業ツリーの違い)を取得し、それを現在のブランチに適用することです。

したがって、コミットに2つ以上の親がある場合、それは2つ以上の差分も表します-どちらを適用する必要がありますか?

あなたはfd9f5782人の親との合併であったチェリーピックをしようとしています。したがって、オプションを使用して、diffを計算する対象となるcherry-pickコマンドを指定する必要があり-mます。たとえば、git cherry-pick -m 1 fd9f578親1をベースとして使用します。

特定の状況についてははっきりとは言えませんが、通常はgit merge代わりに使用することをgit cherry-pickお勧めします。マージコミットをチェリーピックすると、指定しなかった親で行われたすべて-mの変更がその1つのコミットに折りたたまれます。あなたは彼らのすべての歴史を失い、彼らのすべての相違点を一緒にグロミングします。あなたの呼び出し。

于 2012-02-10T14:34:53.533 に答える