と の 2 つのブランチがmaster
ありslave
、同じファイルと同じ行を編集するとします。まず、ファイルの内容は
foo bar
次に、ブランチslave
で次のように編集されます
foo bar baz
ここで、ブランチのユーザーがslave
パッチ ( git format-patch master
) をフォーマットし、ブランチのユーザーに送信しますmaster
。同時に、ブランチmaster
で同じファイルが編集され、
foo bar spam eggs
パッチを適用できず、マージして新しいパッチを作成するmaster
よう求められます。が にマージされ、競合が解決されslave
たら、パッチを再フォーマットします。コミット グラフは次のようになります。master
slave
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
のヘッドであり、競合の解決に関連する変更は含まれていません。有効なパッチをフォーマットしますが、コミット メッセージを省略します。master
custom
git-diff