1. 要約
私の最終的な目標は、linux-kernel リポジトリ内のクライアントのブランチで行われたクライアントの変更を、別の linux-kernel リポジトリに持ち込むことです。これは、両方が共通のベース タグ (たとえば、クライアントのブランチの元となった v4.2) を持っているという事実を前提としています。最初に作成されます)。
そのために、クライアントのブランチのベースとヘッドの間の差分を表すパッチのスタックを作成しようとしています。この最初のステップでは、git format-patch
. 2 番目のステップは、git am
.
git diff
diff
コミットのメタデータ (作成者、メッセージなど) を失いたくないので、GNUには興味がありません。
2. デモのセットアップ
問題を例示するために、簡単な git commit フローを作成しました。次のグラフは、このデモ リポジトリのブランチ設定を示しています。
3. 問題を再現する手順
$ git status
On branch master Your branch is up-to-date with origin/master. nothing to commit, working directory clean.
$ git format-patch BASE
0001-commit-2-br1.patch
$ git checkout BASE
HEAD is now at 65772fd... commit 3-master
$ git apply 0001-commit-2-br1.patch
error: patch failed: file:1 error: file: patch does not apply
4. 追加情報と質問
git diff BASE f316460 > my.patch
動作します!ただし、要約に記載されているように、これは私にとって解決策ではありません。git format-patch
複数のブランチのセットアップでは十分に賢くないと思います。誰かが同じ問題に遭遇しましたか?なしで同じ目標を達成する方法はあります
git format-patch
か?