前提条件を仮定する
- masterブランチからfixブランチを派生させている。
- そこからfixブランチは複数回コミットをしている
- masterブランチは変更なし
Fast-Forwardマージ
今回の前提条件の場合、gitはデフォルトでFast-Forwardマージをします。
masterブランチにfixブランチをマージする
- fixブランチはmasterブランチの履歴を全て含んでいる。
- masterブランチは移動するだけでfixブランチの内容を読み込むことができる。これをFast-Forwardマージという。
- つまり、マージする際に新しいコミット(=マージコミット)を作成しなくてよい。
デメリット
- fixブランチでコミットをし、masterブランチにFast-Forwardマージするということは、結果的にはmasterブランチに直接コミットしたのと変わらない。
- つまり、「ブランチをマージした」という履歴が残らない。
- 具体的な弊害
- 間違えてfixブランチをマージした場合にどこまでがfixブランチでのコミットかわからないため、マージを取り消しにくい。
Non Fast-Forwardマージ
Non Fast-Forwardマージとは、マージしたことをコミット情報として持ちます。
今回の前提条件の場合、--no-ffオプションで早送りマージではなくなります
masterブランチにfixブランチをマージする
- Fast-Forwardマージの場合は新しくコミットを作りません
- Non Fast-Forwardマージの場合はマージしたというコミットを作成する(=マージコミット)
メリット
- 間違えてfixブランチをマージした場合に、マージコミットを取り消すだけでいい。
参考リンク
https://www.slideshare.net/kotas/git-15276118
↑個人的に一番わかりやすかったリンク
https://qiita.com/nog/items/c79469afbf3e632f10a1
https://neos21.hatenablog.com/entry/2017/06/18/080000
https://backlog.com/ja/git-tutorial/stepup/04/
https://nullnote.com/web/git/merge_rebase/
rebaseに関して
今後追記予定