rebaseしてください〜
PullRequestを送りました報告をしたら
このままmergeできないので、rebaseしてもういっかいPUSHしてくださいと言われました。
rebaseしたことなくて、ガクガク(((n;‘Д‘))ηナンダカコワイワァ
練習用のレポジトリーでやってみよう
練習用のレポジトリーなら、どんなことが起きても怖くない!
初心者でも分かる!git rebaseの使い方を解説します
を参考に、まずはmerge
とrebase
の履歴の残り方の違いを理解することとする
mergeとrebaseの違いを確認しよう
mergeの確認
手順
- masterとdevelopブランチを、参考サイトのHEADとTOPICに見立てて進める
- masterで A、B、Cコミットを作る
- developブランチを作る
- developブランチでDコミットを作る
- masterでEコミットを作る
- developブランチにmasterをmergeし、コミット履歴を確認する
詳細
1.masterでA、B、Cコミットを作った
% git log --oneline
8ed1455 commit C
73c200d commit B
9110548 commit A
2.developブランチ作った
% git checkout -b develop
3.developでDコミットを作った
% git log --oneline
a095b4a commit D # 追加したコミット
8ed1455 commit C
73c200d commit B
9110548 commit A
4.masterでEコミットを作る
% git log --oneline
71c87eb commit E
8ed1455 commit C
73c200d commit B
9110548 commit A
5.mergeする
% git checkout develop
% git merge master
6.履歴を確認する
% git log --oneline
be3bfe5 Merge branch 'master' into develop
71c87eb commit E
a095b4a commit D
8ed1455 commit C
73c200d commit B
9110548 commit A
rebaseの確認
手順
- masterとdevelopブランチを、参考サイトのHEADとTOPICに見立てて進める
- masterで A、B、Cコミットを作る
- developでDコミットを作る
- masterでEコミットを作る
- developブランチにmasterをrebaseし、コミット履歴を確認する
詳細
0〜3までの手順は、mergeのと同じなので省略。
rebase前のcommit logは下記。
master
71c87eb commit E
8ed1455 commit C
73c200d commit B
9110548 commit A
develop
0378896 commit D
8ed1455 commit C
73c200d commit B
9110548 commit A
rebaseする
% git checkout develop && git rebase master
commit logを確認する
68be895 commit D
71c87eb commit E
8ed1455 commit C
73c200d commit B
9110548 commit A
mergeとrebase のcommit logの違い
ぱっとみ、違いは
mergeは、時間軸で履歴が並んでいて、さらに
mergeのコミットログが存在する。
rebaseは、developのcommit logはそのままで
masterとの差分 commit E
だけが後から足されているように見える。
が、commit D
のコミットIDが元々developのものと違うのだ。
(rebase前のコミットID:0378896 / rebase 後のコミットID:68be895)
なるほど〜
初心者でも分かる!git rebaseの使い方を解説しますで図の通り
A - B - C - E - D ではなく、
A - B - C - E - D` の意味はこれだった。
merge のコミットIDを確かめてみると
commit D
のコミットIDは、merge前とmerge後と同一であった。(コミットID:a095b4a)
A - B - C - D - E - F
F: merge コミットログ
の意味はこれだった。