はじめてのIT転職🔰なら無料相談!
転職実績No.1🔰エンジニアスクール

【Git rebase】使いこなして作業効率UP

更新: 2020.07.14

Git初心者の方は、「Git rebase」を耳にはしたことがあるけれど、まだ使ったことはない!という方が多いのではないでしょうか?

実際に使ってみようとしても、git merge との違いが見い出せなかったり、git rebaseがどんな動きをしているのかイメージがつかなかったりしますよね。そこで今回は、Git rebaseコマンドの使い方を図などを用いて分かりやすくご紹介します。

出典:Wikimedia

git rebase ってどんなコマンド?

まずgit rebaseを使うとどんなことができるのか、簡単に説明します。

git を使っていると、

  • ブランチがたくさん増えてどれがどこから合流しているのか分かりにくい
  • ある特定のコミットだけあるブランチに採用したい
  • コミットメッセージを書き変えたい

等様々なシチュエーションが出てきますが、

簡単に言うと、コミット履歴を綺麗にしてくれるのが「git rebase」コマンドです。

これを使いこなせると、かなりgit履歴を整理整頓できます。

git rebaseはなにができる?

  • 過去のコミットをまとめる
  • コミットメッセージを編集する
  • ブランチを移動させる
  • あるコミットをいいとこ取りできる
  • 複数のコミットをまとめる

以上のように、様々な便利機能を使うことができます。

baseを日本語訳すると「基盤」や「土台」となります。

rebaseだと「土台を新しく作り直す」といった意味になるのでgit履歴の土台を書き換えているというイメージを持っていただければ大丈夫です。

この機会に、git reabaseをマスターしていきましょう!

マージとリベースの違い

マージとリベースではコミット履歴の残り方が異なります。

スクリーンショット 2017-02-13 午前0.00.09

マージではこのようにコミット履歴が残ります。

スクリーンショット 2017-02-13 午前0.02.28

リベースではこのように、コミット履歴がマージの時とは異なります。

最終的な統合結果は全く一緒ですが、リベースは一本の履歴となり、スッキリして読みやすいのが特徴です。

git rebase でコミットをまとめよう

では実際にgit rebaseコマンドを使いながらコミットをまとめてみましょう。

git rebase -i での使えるコマンド一覧

はじめに、git rebase -igit rebase –interactive同義だということを抑えておきましょう。

“git rebase -i <commit>”

これが基本的なコマンドになります。

<commit>の部分には特定のコミットが入ります。

例えば “git rebase -i HEAD~3″と打った場合

スクリーンショット 2017-02-13 午前0.24.39

このように最後から3つ目までのコミットが表示されます。

するとコミットの先頭にはpickと書かれており、末尾にはコメントが書かれています。

pickの部分を書き換えて処理を行っていきます。

コミットの下には書き換え可能なコマンドがずらりと表示されていますね。

上から見ていきましょう。

  • pick – コミットが採用されとくに何も変化はなし
  • reword – コミットメッセージの編集
  • edit – 指定したコミットで一度処理を止めて修正が可能
  • squash – 一つ前のコミットと融合
  • fixup – squash とほぼ同じだが、コミットメッセージが反映されずに融合される
  • exec – コミットに直接指示するのではなく、shellでコマンドを実行
  • drop – コミットを取り除く

git rebase squashで複数のコミットをまとめる

スクリーンショット 2017-02-13 午前1.09.51

まずは先ほどと同様に、 “git rebase -i HEAD~3” と入力します。

pickの部分を”squash”と書き換えることで、簡単にsquashを実行できます。

これを保存することで上2つ「6be50a5コミット」「12252f8コミット」がまとまります。

git rebase –ontoを使ってブランチを自由に移動させよう

“git rebase –onto”を使うことで少し複雑な処理も簡単にできてしまいます。

スクリーンショット 2017-02-13 午前1.55.03

 

このようなブランチ構成で、C1とC2のコミットをもったBranch3ブランチだけマスターに持っていきたいとします。

スクリーンショット 2017-02-13 午前3.14.52

上記のコマンドを使うことで Branch3 は Master の後ろに追加されます。

スクリーンショット 2017-02-13 午前2.00.33

このように”git rebase –onto”を使うと自由にブランチを移動させることができます。

 

git rebaseでの裏技をマスターしよう

もうすでに git rebase を用いた裏技をいろいろご紹介しましたが、ここからは更なる裏技の習得となります。

使いこなせるともう git は自由自在です!

git cherry-pickを使っていいとこ取りをしよう

特定のコミットを選んでHEADに追加したい時

git cherry-pickコマンドを使いましょう。

まず下記のような構図が存在するとします。

スクリーンショット 2017-02-13 午前2.25.38

 

  1. B2 コミットを上記 Master の A1 (HEAD)に追加したい時
  2. $ git cherry-pick B2」コマンドを入力

スクリーンショット 2017-02-13 午前2.29.16

Master の A1 の直後に追加することができました。

ここでは B2 が Cherrypick ブランチからコピーされて Master ブランチに追加されています。

git rebase –continueでコンフリクトを解決しよう

git rebaseもマージと同様コンフリクトが起こってしまう時があります。

コンフリクト(競合)が起こってしまった時は問題がある場所を修正してから以下を実行します。

スクリーンショット 2017-02-13 午前2.50.34

すると git rebase の作業を続けることができます。

この記事のハッシュタグ

編集や取り消し作業に使えるコマンド

git を使っていて

「ここのコミットメッセージわかりずらいから変えたいな」

「ここの部分のコミットいらないな」

など、過去の履歴の編集をしたい時ってありますよね?

そんな時の対処方をお教えします!

git rebase –reword 過去のコミットメッセージを変えたい時

git rebase -iで過去のコミットの一覧をだします。

そしてpickの部分をrewordに変えます。

スクリーンショット 2017-02-13 午前1.24.07

↓     ↓     ↓

スクリーンショット 2017-02-13 午前1.37.12

すると、コミットメッセージを編集することができます。

git rebase –abort / rebase コミットをやめたい時

はたまた git rebase で作業をしている時にコンフリクトが発生してしまった時は以下のコマンドを入力。

スクリーンショット 2017-02-13 午前1.31.25

すると、リベースをキャンセルすることができます!

これを行うことで rebase 前の状態に戻ってくれます。

さきほどの git rebase –continueと機能は違えど同じような使い方をします。

まとめ

 いかかでしたか?

git rebaseの使い道、その便利さを習得できたのではないでしょうか。

git rebaseコマンドを駆使して、作業効率をUPしていきましょう!

↑目次へ戻る

【転職実績No.1👑】年収アップと自由な働き方を実現したいならITエンジニア転職!

こんな希望はありませんか?

  • もっと年収アップできる仕事がしたい
  • 時間や場所に縛られず自由に働きたい
  • 専門スキルで手に職をつけたい

という方は、ITエンジニア転職がおすすめです

テックキャンプなら、完全未経験🔰でも大丈夫!プログラミング学習〜エンジニア転職支援、副業案件獲得まで個別にサポートします👌

さらに給付金活用で受講料最大70%OFF

※2020年12月時点 3.テックキャンプ エンジニア転職は経済産業省の第四次産業革命スキル習得講座の認定も受けており、条件を満たすことで支払った受講料の最大70%(最大56万円)が給付金として支給されます

興味がある方は、以下よりIT転職のプロにキャリアのお悩み相談から始めてみましょう!

まずは無料で相談してみる

この記事を書いた人

あなたの理想のキャリアに合わせた、テックキャンプの2つのサービス

Advertisement