と の 2 つのブランチがmasterありslave、同じファイルと同じ行を編集するとします。まず、ファイルの内容は
foo bar
次に、ブランチslaveで次のように編集されます
foo bar baz
ここで、ブランチのユーザーがslaveパッチ ( git format-patch master) をフォーマットし、ブランチのユーザーに送信しますmaster。同時に、ブランチmasterで同じファイルが編集され、
foo bar spam eggs
パッチを適用できず、マージして新しいパッチを作成するmasterよう求められます。が にマージされ、競合が解決されslaveたら、パッチを再フォーマットします。コミット グラフは次のようになります。masterslave
slave: master:
foo bar baz spam eggs
| \
| \
| foo bar spam eggs
| |
foo bar baz |
\ |
\ |
+--------- foo bar
最新のコミット (マージ) はslave次のようになります。
@@@ -1,1 -1,1 +1,1 @@@
- foo bar baz
-foo bar spam eggs
++foo bar baz spam eggs
ただし、ここで を実行するgit format-patch masterと、マージと競合の解決が考慮されていない、以前とまったく同じパッチが得られます。
@@ -1 +1 @@
-foo bar
+foo bar baz
最新のマスターに適用されるパッチをどのようにフォーマットしますか? 無しでやってみたいrebaseです。
更新:git format rev1..rev2ここで、rev1とはそれぞれとブランチrev2のヘッドであり、競合の解決に関連する変更は含まれていません。有効なパッチをフォーマットしますが、コミット メッセージを省略します。mastercustomgit-diff