2012-09-02 10 views
85

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

+7

'am'は' Apply Mail'の略語と考えることができます... –

答えて

74

は、入力と出力の両方が異なっている:(--index又は--cachedが使用される場合、またはインデックス)

  • git apply(例えばgit diffの出力)パッチを取得し、作業ディレクトリに印加します。
  • git amは、電子メールメッセージ(たとえば、出力git format-patch)としてフォーマットされたコミットのメールボックスを取得し、それらを現在のブランチに適用します。

git am uses git apply behind the scenesが、(Maildirまたはmboxを読み取り、電子メールメッセージを解析する)前と(コミットを作成)した後、多くの作業を行います。

+5

注: 'git apply'は' git format-patch'出力も受け付けているようです。 –

+3

'git apply'は' git format-patch'の出力にも有効ですが、変更はステージングされず、コミットする必要があります(したがって、適用されるインデックスに異なるコミットポイントが作成されます)。 'git am'ではコミット情報(作成者などと一緒に)が適用されているインデックスにコミット情報を渡します。 'git apply'はあなたのrepo(悪い)にパッチを当てるためのものです。' git am'は正当な機能の変更を受け取り、それをあなたのrepoに組み込むことができます。 –

6

git amの場合、git statusを使用した場合、ローカルの変更は表示されません。

git applyはあなたが結果的にgit statusgit diff意志出力、自分でコードを書いたかのように、ソースファイルに変更を加えるためにあなたが適用されているパッチで行われた変更を可能にし、その後、あなたはより多くの変更を追加/修正することができますし、 1つの新しいパッチとして一緒に提出してください。

9

git applygit amは、電子メールからパッチのパッチとシーケンスを適用するためのものであるMBOXまたはMaildirのフォーマットのいずれかとgit format-patchの「反対」であるのに対し、直差分(例えばgit diffから)を印加するためのものです。 git amは、コミットメッセージを抽出し、電子メールメッセージから詳細を作成しようとします。これがコミットを行う理由です。

関連する問題