
- どちらもfeatureブランチの変更内容をmasterブランチに取り込んでいる
- 違いはリベースの履歴は直線、マージの履歴は分岐している点
- リベースすると履歴が一直線になる
mergeとrebaseは共に履歴を統合しますが、特徴が異なります。
- merge変更内容の履歴はそのまま残るが、履歴が複雑になる。
- rebase履歴は単純になるが、元のコミットから変更内容が変更される。そのため、元のコミットを動かない状態にしてしまうことがある。
mergeとrebaseは、チームの運用方針に応じて使い分けます。例えば、履歴を一本化するように運用をするのであれば
- トピックブランチに統合ブランチの最新のコードを取り込む場合はrebaseを使う
- 統合ブランチにトピックブランチを取り込む場合は、まずrebaseしてからmerge
fastforwardの禁止設定
git config —global merge.ff false
fastforwardを禁止に設定していたら、別ブランチでの作業履歴を残す事が可能
してはいけないこと
- GitHubにプッシュしたコミットをリベースする事
- git push -fを曖昧に使用するのは絶対NG

ローカルのコミット1の次のコミットはコミット3
GitHubのコミット1の次のコミットはコミット2