1

問題を実証するための詳細情報は次のとおりです。

  1. 人 A が私のプロジェクトをフォークします

  2. 人物 A が自分のフォークにコミットします (8 コミット ++)

  3. ユーザー A がアップストリームの変更をプルするのを忘れている

  4. 人 A は自分のフォークに他のものをコミットします (4 コミット)

私がやりたいことは、最後の 4 つのコミット (ポイント 4 を参照) を彼からのみプルすることです。これのコマンドだと聞きましたgit cherry-pickが、解決すべき競合が多すぎて、彼が行ったすべてのコミットをプルしたくない場合にどうすればよいかわかりません。

私がすでに試したこと:

  1. 彼のものをすべて別のブランチに引っ張る

  2. いくつかのチェリーピックコマンドを試してください(もちろん、多くの競合などがあるため、誰も機能しませんでした)

  3. git fetch して、cherry-pick を試してください (運もありません)。

私が持っていることを考えると、彼のリモートURLが保存され、彼のもののブランチが保存されています。

4

1 に答える 1

4

範囲チェリーピックを行うことができます:

 git cherry-pick his-remote/branch-name~4..his-remote/branch-name

またはリベースを使用します。

 git rebase --onto your-branch his-remote/branch-name~4 his-remote/branch-name

衝突を避けることはできません。それらを解決する必要があります。Windows を使用している場合、Beyond Compare または P4Merge は、トリッキーな競合解決に大いに役立つ 2 つです。

あなたの側で行われた変更の数に応じて、共通点にリセットし、彼の変更を早送りマージし、その上で変更をリベースすることをお勧めします。これにより、競合の解決がはるかに簡単になる可能性があります。

于 2012-10-28T19:27:48.570 に答える