176

との両方git amgit apply使用して、パッチを適用できます。違いがわかりません。私は今違いを見ています:ファイルに触れるだけでコミットを作成しないのgit amに対し、自動的にコミットします。git applyそれが唯一の違いですか?

4

3 に答える 3

192

入力と出力の両方が異なります。

  • git applyパッチ (例: の出力) を取得し、それを作業ディレクトリ (またはまたはが使用されgit diffている場合はインデックス) に適用します。--index--cached
  • git am電子メール メッセージとしてフォーマットされたコミットのメールボックス (例: の出力git format-patch) を受け取り、それらを現在のブランチに適用します。

git amgit applyバックグラウンドでを使用しますMaildirが、前 (またはの読み取り、mbox電子メール メッセージの解析) と後 (コミットの作成) でより多くの作業を行います。

于 2012-09-02T22:23:10.293 に答える
25

git applyは直接差分 (例: からgit diff)git amを適用するためのものであり、 は mbox または Maildir 形式のいずれかの電子メールからパッチおよび一連のパッチを適用するためのものであり、git format-patch. git am電子メール メッセージからコミット メッセージと作成者の詳細を抽出しようとするため、コミットを行うことができます。

于 2012-09-02T22:21:01.753 に答える
15

パッチを適用するとgit am、実行時にgit statusローカルの変更は表示されませんがgit log、パッチがソース コードにコミットされたことが示されます。

しかし、git applyあたかも自分でコードを書いているかのようにソースファイルに変更を加えると、git status適用git diffしたパッチに現れた変更が出力されます。したがって、git applyより多くの変更を修正/追加し、git addそれらを単一の新しいパッチとしてまとめることができます。

于 2012-09-02T22:20:31.413 に答える