[解決済み] 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
は二つのツリー間の差分を取得するのに便利です。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] git add -A」と「git add .」の違い。
-
[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
-
[解決済み] Gitでファイルの変更を追跡しない、無視する方法とは?
-
[解決済み] 現在のGitブランチをmasterブランチにする
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Git error: cannot spawn ssh.の回避策。そのようなファイルやディレクトリはありません
-
ファイル名が長すぎるため、作業ツリーをチェックアウトできない警告が表示されました。クローンには成功しましたが、チェックアウトに失敗しました。
-
[解決済み】最新のgitコミットからパッチを簡単に作成するにはどうしたらいいですか?
-
[解決済み] 現在のブランチにあるファイルをメインブランチにある同じファイルに上書きしますか?
-
[解決済み] 新サーバーへのGitプッシュ/クローン
-
[解決済み] Git は、省略形のコミット ID が 2 つの異なるコミットを参照する場合に警告を発しますか?
-
[解決済み] Gitブランチの名前をローカルとリモートで変更できますか?重複
-
[解決済み] git add --patch' で新しいファイルをインクルードする?
-
[解決済み] Git のプッシュが "non-fast-forward" で拒否されました。
-
[解決済み] どのブランチとマージしたいかを言わずにpullするように言われました。