22
18

More than 3 years have passed since last update.

Fast-ForwardマージとNon Fast-Forwardマージ

Last updated at Posted at 2020-04-17

前提条件を仮定する

  • 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に関して

今後追記予定

22
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
18