LoginSignup
116
134

More than 5 years have passed since last update.

git rebaseと仲良くなろう~part1

Posted at

rebaseしてください〜

PullRequestを送りました報告をしたら
このままmergeできないので、rebaseしてもういっかいPUSHしてくださいと言われました。

rebaseしたことなくて、ガクガク(((n;‘Д‘))ηナンダカコワイワァ

練習用のレポジトリーでやってみよう

練習用のレポジトリーなら、どんなことが起きても怖くない!
初心者でも分かる!git rebaseの使い方を解説します
を参考に、まずはmergerebaseの履歴の残り方の違いを理解することとする

mergeとrebaseの違いを確認しよう

mergeの確認

手順

  1. masterとdevelopブランチを、参考サイトのHEADとTOPICに見立てて進める
  2. masterで A、B、Cコミットを作る
  3. developブランチを作る
  4. developブランチでDコミットを作る
  5. masterでEコミットを作る
  6. 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の確認

手順

  1. masterとdevelopブランチを、参考サイトのHEADとTOPICに見立てて進める
  2. masterで A、B、Cコミットを作る
  3. developでDコミットを作る
  4. masterでEコミットを作る
  5. 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 コミットログ
の意味はこれだった。

116
134
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
116
134