SHA1コミット番号のリスト用のパッチを作成するスクリプトを書く必要があります。
私はgit format-patch <the SHA1>
を使用しようとしました、しかしそれはそのSHA1以来各コミットのためにパッチを生成しました。数百のパッチが生成された後、私はプロセスを殺さなければなりませんでした。
特定のSHA1専用のパッチを生成する方法はありますか?
試してください:
git format-patch -1 <sha>
または
git format-patch -1 HEAD
上記のドキュメンテーションリンクによれば、-1
フラグはgitにパッチに含まれるべきコミットの数を伝えます。
- <n>
一番上のコミットからパッチを準備します。
次のコマンドでパッチを適用します。
git am < file.patch
特定のsha1ハッシュから一番上のコミットからパッチを生成するには:
git format-patch -<n> <SHA1>
単一のパッチファイルのheadから最後の10個のパッチ:
git format-patch -10 HEAD --stdout > 0001-last-10-commits.patch
コミット1の後にコミットID 2があるとします。
git diff 2 1 > mypatch.diff
2と1はSHAハッシュです。
このコマンド( @ Naftuli Tzvi Kay によって既に示唆されているように):
git format-patch -1 HEAD
HEAD
を特定のハッシュまたは範囲に置き換えます。
uNIXのメールボックスフォーマットに似たフォーマットの最新のコミット用のパッチファイルを生成します。
-<n>
- 一番上のコミットからパッチを準備する.
次に、パッチファイルをメールボックス形式で再適用できます。
git am -3k 001*.patch
man git-format-patch
を参照してください。
git format-patch commit_Id~1..commit_Id
git apply patch-file-name
速くて簡単な解決策。
(シングルコミット)パッチが特定のコミットの上に確実に適用されるようにしたい場合は、新しいgit 2.9(2016年6月)のオプションgit format-patch --base
を使用できます。
git format-patch --base=COMMIT_VALUE~ -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git format-patch --base=auto -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git config format.useAutoBase true
git format-patch -M -C COMMIT_VALUE~..COMMIT_VALUE
コミットbb52995 、 コミット3de6651 、 コミットfa2ab86 、 コミットded2c09 (26 Apr 2016)by Xiaolong Ye( ``) を参照。
( Junio C Hamano - gitster
- in commit 72ce3ff 、2016年5月23日にマージ)
format-patch
:ベースツリー情報を記録するために '--base
'オプションを追加メンテナやサードパーティのテスターは、パッチシリーズが適用される正確なベースツリーを知りたいと思うかもしれません。ベースツリー情報を記録し、それを最初のメッセージの最後に追加するための '
--base
'オプションをgit format-patchに教えてください(カバーレターかシリーズの最初のパッチ)。基本ツリーの情報は、他の人が作業しているプロジェクト履歴の安定した部分である「基本コミット」と、よく知られている0個以上の「必須パッチ」で構成されています。パッチが適用される前にトポロジベースの順序で「ベースコミット」の上に適用される必要がある「ベースコミット」の一部ではない飛行中のパッチ。
「基本コミット」は、「
base-commit:
」の後にコミットオブジェクト名の40桁の16進数が続きます。
「必須パッチ」は、「prerequisite-patch-id:
」の後に40ックスの「patch id」が続き、「git patch-id --stable
」コマンドを介してパッチを渡すことで取得できます。
特定のコミット(最後のコミットではない)からパスを生成するには
git format-patch -M -C COMMIT_VALUE~1..COMMIT_VALUE
単に指定したファイルをdiffしたいだけなら、次のことができます。
git diff master 766eceb - 接続/> 000-mysql-connector.patch