最後の2つのリビジョンのパッチを作成したいと思います。
git format-patch -2
リビジョンごとに1つずつ、2つのパッチファイルを提供します
git format-patch HEAD~2..HEAD
同じことを与えます。
git format-patch -1 HEAD~2..HEAD
単一のファイルを提供しますが、最後のリビジョンの変更のみが含まれます。
Gitでこれを行う方法はありますか?
git diff HEAD~2..HEAD > my-patch.diff
ただし、フォーマットパッチのコミットごとのメタデータはありません。
--stdoutオプションを使用してから、ファイルにcatします。
そのようです:
git format-patch HEAD~2..HEAD --stdout > changes.patch
これにより、コミットごとのメタデータが保持されます。
Git 2.20(2018年第4四半期)以降では、次のことができます。
git format-patch --interdiff
。git format-patch --rangediff
。どちらも、このバージョンと以前のカバーレターの試み(またはツリーダッシュの後のコメント)の違いを説明するのに役立ちます。
format-patch
:許可--interdiff
/--rangediff
単独パッチに適用するパッチまたはシリーズの改訂版を提出する場合、通常はカバーレターに、interdiffの形式で前回の試行以降の変更の要約を含めると(レビューアにとって)役立ちます。
ただし、ノイズの多い読み取りを行っているにもかかわらず、1パッチシリーズの単独パッチのコメントセクションにinterdiffまたはrangediffを挿入すると便利な場合があります。
commit ee6cbf7 、 commit 3fcc7a2 、 commit 3b02641 、 commit 5ac290f 、 commit 126facf を参照してください、 commit fa5b7ea (2018年7月22日)by Eric Sunshine(sunshineco
) .
( C浜野潤夫-gitster
- in commit 688cb1c 、2018年9月17日)
したがって、「
git format-patch --interdiff=<prev>
"は、カバーレターを要求するのではなく、1つのパッチのコメントセクションにinterdiffを挿入します。
interdiffは、混乱を避けるためにインデントされていますgit-am
および人間の読者は、パッチの一部を適切と見なします。
commit 40ce416 、 commit 8631bf1 、 commit 4ee9968 、 commit 2e6fd71 、 commit 31e2617 を参照してください、 commit 73a834e 、 commit 2566865 、 commit 87f1b2d (2018年7月22日)by Eric Sunshine(sunshineco
) 。
( C浜野順夫-gitster
- in commit 881c019 、2018年9月17日)
したがって、「
git format-patch --range-diff=<refspec>
"を挿入してrange-diff
は、カバーレターを要求するのではなく、単独のパッチの解説セクションに挿入します。
次のようなことができます:
$ git checkout -b tmp $ git reset HEAD〜2 $ git commit -a
ブランチtmpへのコミットは、2つの個々のコミットと同じになります。