0
0

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 rebase は pull とは違いますか

Posted at

🎲はじめに

そろそろ rebase が美味しい季節になってきましたね

分散型ヴァージョン管理システムを破壊しないように、rebase のことを把握して コミットID を意識していることをアピールするチャンス到来

基本gitコマンドはこちらの記事で確認してほしい

🎬プロローグ

作業してたらmainブランチに知らないコミットができてた

📥pullの場合

リモートで merge branch してもいいけど、
コンフリクトの可能性あるしローカルで merge する手順。

1. merge_commitを作る

# リモートmainブランチから、作業ブランチにpullする
git switch feature/my作業
git pull origin main

または

# ローカルのmainブランチを最新にする
git switch main
git pull origin main
# git pull origin main:main 上記2行を1行にしたもの

# ローカルmainブランチから、作業ブランチにmergeする
git switch feature/my作業
git merge main

2. リモートにpushする

# リモートmainブランチにpushする
git switch feature/my作業
git push origin main

📝説明

  • pull = fetch + merge
  • fetch : 最新の取得
  • merge : 合併

pullを使うと、マージコミットが作成される

  • メリット:変更が明確になる
  • デメリット:履歴が複雑になる

🔧rebaseの場合

1. 作業ブランチのコミットIDを変更する

# ローカルのmainブランチを最新にする
git switch main
git pull origin main

# ローカルmainブランチから、作業ブランチにrebaseする
git switch feature/my作業
git rebase main

2. リモートにpushする

# リモートmainブランチにpushする
git switch feature/my作業
git push origin main

📝説明

mainの最新の取得してその先頭にリベース(移動)する
コミットIDのみ変わる

マージコミットが作成されない

  • メリット:履歴が線形で理解しやすい
  • デメリット:履歴が書き換えられるため、他の人とコンフリクトするかも

※すでにプッシュしているコミットを改変すると大変カオスなことになるので、 絶対に使用しないでください

🛠️interactive rebase

リベースの過程で各コミットを手動で変更できるモード

  • squash : 複数のコミットを1つにまとめる
  • edit : コミットメッセージや内容の変更
  • pick : コミットの順序変更
  • drop : 不要なコミットの削除

🎯選び方

プロジェクトのニーズ、チームの運用方針、目的で使い分ける
コミット履歴を意識するなら rebase

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?