1. ホーム
  2. git

[解決済み] git が 2 つのブランチ間の diff からコミットを作成

2023-02-10 17:23:27

質問

似たような歴史を持つが、互いに関連性のある2つの支店があります。

私はこの二つのブランチの間の変更を 1 gitコミットです。

ファイルが削除されたり作成されたりしているので、それをパッチに反映させたいのです。

すなわち、以下のものは動作しません。

git diff branch_a branch_b -- > patchfile
git checkout branch_b
git apply patchfile # deletes and adds are ignored
git commit # we miss the deletes

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

branch_b..branch_a" の diff をコミットにする簡単な方法は、以下の通りです。

  1. ブランチ tmp を branch_a で作成し、チェックアウトします ( git branch tmp branch_a && git checkout tmp ) (または git reset --hard branch_a は既存のブランチ上で)
  2. git reset --soft branch_b
  3. git commit

というコミットをすると、branch_b と branch_a の間のすべての diff が含まれます。


これは以下の理由で動作します。

  • 1. は、ファイルにbranch_aを反映させるようにします。これはブランチに必要な "最終結果"です。
  • 2. "headをbranch_bにリセットする "が、"変更したすべてのファイル[すなわちbranch_a head]を"Changes to be committed"として残し、gitと同様に status が言うところの "Changes to be committed" として残します。" ←( git reset --soft ドキュメント この例のブランチが追加されています)