1. ホーム
  2. git

[解決済み] git format-patchとgit diffの違いは何ですか?

2022-12-18 13:08:26

質問

git format-patch' と 'git diff' の出力に違いがないように思うのですが、何か違いがあるのでしょうか?また、'git diff' を使ってパッチを作成し、それを git apply で適用することはできないのでしょうか?

私の問題は、インデックスに追加された変更があることですが、どうやらgit format-patchはコミットしか受け付けないようなので、もし私がdiffの出力を使うことができるなら、このコマンドを使ってインデックスの変更に対するパッチを作成することができます。

git diff --cached > index.patch

どのように解決するのですか?

で作成したパッチを git format-patch で作成されたパッチには、コミットに関するいくつかのメタ情報 (コミッター、日付、コミットメッセージ、...) とバイナリデータの差分も含まれます。すべてはメールとしてフォーマットされ、簡単に送信できるようになります。それを受け取った人は、対応するコミットを次のようにして再作成することができます。 git am で、すべてのメタデータをそのまま再現できます。また、これは git apply も適用できます。

で作成されたパッチは git diff で作成されたパッチは、コンテキストを伴う単純な差分となります (例えば diff -u ). また、これは git apply でも適用できますが、メタデータは(存在しないので)再作成されません。

まとめると git format-patch はコミットを送信するのに有効であり、一方 git diff は二つのツリー間の差分を取得するのに便利です。