4

1. 要約

私の最終的な目標は、linux-kernel リポジトリ内のクライアントのブランチで行われたクライアントの変更を、別の linux-kernel リポジトリに持ち込むことです。これは、両方が共通のベース タグ (たとえば、クライアントのブランチの元となった v4.2) を持っているという事実を前提としています。最初に作成されます)。

そのために、クライアントのブランチのベースとヘッドの間の差分を表すパッチのスタックを作成しようとしています。この最初のステップでは、git format-patch. 2 番目のステップは、git am.

git diffdiffコミットのメタデータ (作成者、メッセージなど) を失いたくないので、GNUには興味がありません。

2. デモのセットアップ

問題を例示するために、簡単な git commit フローを作成しました。次のグラフは、このデモ リポジトリのブランチ設定を示しています。

  1. Gitgグラフ - コミット時間順: ここに画像の説明を入力

  2. Gitgグラフ - トポロジー順:ここに画像の説明を入力

  3. Gitkグラフ:
    ここに画像の説明を入力

  4. git log --oneline --graph --decorate: ここに画像の説明を入力

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か?

4

0 に答える 0