1

私はgitで私の大学と一緒に働いています。私はブランチに取り組んでおり、彼はマスターに取り組んでいます。私は自分のブランチで彼のファイルに関連するいくつかの作業を行ったので、彼にパッチ ファイルを送ることにしました。でパッチを作成し、git format-patch彼に送りました。を使用してパッチを適用しようとするとgit am、次のメッセージが表示されます。previous release directory

おそらく、別のブランチからパッチが届いたためです。

彼が master ブランチでパッチを使用する方法はありますか?

注: を使用しており、jetty 用に生成された commit-id を保持git amしません。git apply私はまだコミッターが彼のローカルリポジトリで私であることを望んでいます。

4

2 に答える 2

1

適切に適用できないパッチに対処する場合は、2 つの解決策のいずれかを使用することを検討してください:
( bugdromer の記事):


それに対処する最も簡単な方法は次のとおりです。

  • git am --abort
  • によってパッチを手動で適用しますpatch -p1 < PATCH
  • 手で紛争を解決し、
  • 最後に でコミットしgit commit -aます。

しかし、この場合、コミット メッセージを書き直す必要があり、あまり良くありません。もっと賢い方法があります。


に保存されている対応するパッチ ファイルを見つけることができ、.git/rebase-apply" 0001" という名前が付けられています (パッチが保存されているディレクトリの名前は最近変更されました。これは 1.7.4.1 でテストされています)。
この時点で:

  • パッチを適用するために使用できますgit apply。これは、パッチ コマンドの git に相当します
  • 競合するファイルを通常の方法で修正します (ファイルをチェック.rejし、競合するファイルと比較し、最後に修正されたファイルをインデックスに追加します)。

例:

$ git apply PATCH --reject
$ edit edit edit
$ git add FIXED_FILES
$ git am --resolved

これで完了です。
つまり、git amインデックスを変更していないため、

  • git apply --rejectパッチ(に保存.git/rebase-apply)、
  • 競合を手作業で修正し、
  • 変更されたファイルを追加し、
  • 最後に、問題を解決したことを git に伝えます。

この場合の利点は次のとおりです。

  • コミットメッセージを再編集する必要はありません。
  • また、一連のパッチを適用している場合 (つまり、 を使用してgit am PATCHESおり、はメールボックスです)、何度も繰り返す必要はありPATCHESません。git abortrun git am
于 2012-12-02T12:47:02.650 に答える