Gitのmergeとrebaseについて
共通
ローカルブランチ、リモートブランチを統合するコマンド
master(main)ブランチへの統合時に使用することが多い
merge
カレントブランチから統合対象の変更を取り込む(持ってくる)イメージ
コマンド実行ブランチは取り込み側のブランチ
HEADをツリーの先頭に移動する
コンフリクト解消は1度のみ
code: (sh)
# カレントブランチを取り込み側に切り替え
$ git checkout 取り込み側のブランチ名
# 変更の取り込み
$ git merge 取り込み対象のブランチ名
2種類のマージ
fast-forward
早送り
ツリーに枝分かれが無い状態(I字)で行われる
マージコミットは作られない
non-fast-forward
非早送り
ツリーに枝分かれが無い状態(Y字)で行われる
マージコミットが作られる
rebase
カレントブランチの変更を統合対象のブランチの末尾に繋げる(付け替える)イメージ
コマンド実行ブランチは統合したい修正を含むブランチ
ツリーのBASE(分岐点)を移動する
コンフリクト解消はコミットの数だけ発生する
rebase後に移動されたコミットは元コミットと異なる(親コミットIDが異なる)
push済みのコミットをrebaseするとコミットログがおかしくなる(pull、pushができなくなる)
統合したいブランチ名 は新たに移動するBASE(分岐点)を指している
code: (sh)
# カレントブランチを統合したいブランチ(作業ブランチ)に切り替え
$ git checkout 統合したいブランチ名
# 変更を統合先のブランチの末尾に繋げる
$ git rebase 統合先のブランチ名
Gitの引数のorigin/mainとorigin mainの違い
https://www-creators.com/archives/1943
https://kray.jp/blog/git-pull-rebase/
https://nullnote.com/web/git/merge_rebase/
#Git
#GitHub