git am
とgit apply
の両方を使用して、パッチを適用できます。違いがわかりません。違いがわかりました:git am
は自動的にコミットしますが、git apply
はファイルに触れるだけで、コミットは作成しません。それが唯一の違いですか?
入力と出力の両方が異なります。
git apply
はパッチ(例: git diff
の出力)を取得し、それを作業ディレクトリ(または--index
または--cached
が使用されている場合はインデックス)に適用します。git am
は、メールメッセージとしてフォーマットされたコミットのメールボックス(たとえば git format-patch
の出力)を取得し、現在のブランチに適用します。git am
は舞台裏でgit apply
を使用 ですが、前(Maildir
またはmbox
を読み取り、電子メールメッセージを解析)と後(コミットの作成)により多くの作業を行います。
git apply
は単純な差分を適用するため(たとえばgit diff
から)git am
はmboxまたはMaildir形式の電子メールからパッチおよびパッチのシーケンスを適用するためで、git format-patch
。 git am
は、コミットメッセージと作成者の詳細を電子メールメッセージから抽出しようとするため、コミットを行うことができます。
git am
を使用すると、パッチを適用するため、git status
を使用する場合、ローカルの変更は表示されません。
git apply
を使用すると、自分でコードを記述しているかのようにソースファイルに変更を加えることができます。したがって、git status
およびgit diff
は、適用したパッチに加えられた変更を出力します。変更を修正/追加して、1つの新しいパッチとしてまとめて送信できます。