5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

git pull --rebaseコマンドについて、下記記事と、記事内で参考にされている記事をざっと読み、「コミットキレイになるならわかりやすくていいのでは」という考えのもと使い始めました。コミカルで面白い記事でした。
参考:https://qiita.com/yanutetsu/items/bdafe41594327a422b00

使ってみて

この履歴が

style: 文字の大きさを修正
Merge branch 'main' of github.com:... 
style: ラベル修正 
style: ラベル修正
Merge branch 'main' of github.com:... 
style: フォームラベルの大きさを修正 

こう

style: 文字の大きさを修正
style: ラベル修正 
style: ラベル修正
style: フォームラベルの大きさを修正 

余計なノイズが消えた印象です。

  • 作業途中の場合、一度stashで作業内容を退避する必要があり、面倒に感じました。
$ git pull --rebase origin develop 
error: cannot pull with rebase: You have unstaged changes.
error: please commit or stash them.
  • git pushがうまくいかず、-fオプションを使わなければならない時がありました。

git pull とgit pull --rebaseの違い

git pull

# 最初の状態
A---B---C---D (リモート)
    \
     E---F---G (ローカル)

# git pull後: マージコミットMが作られる
A---B---C---D (リモート)
    \         \
     E---F---G---M (ローカル)

全部ぐちゃぐちゃに混ぜるコミット(M)を作るのがgit pull
スープみたいだなと思いました🍲

git pull --rebase

# 最初の状態
A---B---C---D (リモート)
    \
     E---F---G (ローカル)

# git pull --rebase後:
A---B---C---D---E'---F'---G' (ローカル)

ローカルブランチを一部を切り取って、リモートの変更をはさんで再度切り取ったコミットをくっつけるのがgit pull --rebase

ローカルブランチだけに着目すると,
本来は

 # git pull --rebase前:
A---B---E---F---G (ローカル)

となっていたものが

# git pull --rebase後:
A---B---C---D---E'---F'---G' (ローカル)

に変化しました。
元のE,F,Gが無くなったのでgit push -fを使う必要がありました。
元のロープを途中で切って別物になったみたいにイメージしました🪢

最後に

git pull --rebaseを使用した感想と調査でした。個人的にはマージコミットが入らない方が好みだと感じましたが、レビュワー側がどう感じるかも気になりました。

5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?