1. ホーム
  2. git

[解決済み] ブランチ内の全コミットに対するパッチを生成するには?

2023-07-31 02:59:42

質問

ブランチ名だけで、指定したブランチのすべてのコミットに対するパッチを生成するにはどうしたらよいでしょうか。

このステップは、複雑なワークフローの一部であり、そのすべてが自動化されています。 したがって、誰かが手動でブランチの最初のコミットを決定することを要求するのは、オプションではありません。

ブランチでの変更はローカルで行われないため、reflog に依存するものはオプションではないことに注意してください。

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

指定したブランチがどのブランチから作成されたかがわかっている場合、次のようにします。 パッチを作成するのは簡単です。 :

git diff master Branch1 > ../patchfile
git checkout Branch2    
git apply ../patchfile

(を生成することができます(そして パッチも生成できます。 )

しかし、ブランチの正しい "creation commit" を見つけるのは複雑です: " を参照してください。 Git でブランチポイントを見つけるには? をご覧ください。

その OP akirekadu を使用しました。

git format-patch $(git merge-base --fork-point master)..branchB 

"で使われているのがわかります。 git diff 作業コピーとブランチベースの間 "です。

レジェンド2k 追加 をコメント欄に追加します。 :

生成されたパッチを確認するには git apply --stat patchfile

これは適用されませんが、パッチの詳細を与えます。


警告 AGP ノート コメント欄 ということを

$(git merge-base --fork-point master)..branchB コマンドは毎回正しいブランチルートリビジョンを見つけることができないかもしれません。


イジョセフ 指摘 コメントで

<ブロッククオート

ちなみに ファブリケーター は、それぞれのプッシュに対して自動的にパッチファイルを生成することで、この種のものをシームレスに扱います。