🎉 Git初心者でも安心!git rebase -iでコミット履歴を自由自在に編集しよう!
こんにちは、Git好きのみなさん!
今回はGitの超便利コマンド git rebase -i(インタラクティブリベース)を楽しく学んでいきますよー!
「昔のコミットの内容を修正したい!」とか、「コミットを整理して綺麗にしたい!」と思ったことはありませんか?
そんなときに大活躍するのがこの git rebase -i なんです✨
この記事では、メリットやデメリットも紹介していきます!
それでは一緒にやってみましょう♪
🌟 git rebase -i のメリット・デメリット
メリット
• ✅ コミット履歴をキレイに整えられる!
不要なコミットや間違えたコミットを修正・削除できるので、履歴がスッキリ!
• ✅ コードレビューがしやすくなる!
履歴が整理されていると、他の人も変更内容を理解しやすいです。
• ✅ コミットをまとめてわかりやすく整理できる!
小さい変更を一つにまとめたり、コミットを分割することができます。
デメリット
• ⚠️ 履歴が書き換わるため、チームとの共有ブランチでは使いづらい
リモートにすでにプッシュした履歴を書き換えると、他のメンバーに影響が出る可能性があります。
• ⚠️ 操作を間違えるとコミットを失うリスクがある
ただし、git rebase --abort で元の状態に戻せますので安心してくださいね!
以上を踏まえた上で、実際に使ってみましょう🎈
📌 サンプルのコミット履歴を用意しました
まずは、こんなコミット履歴があるとします。
$ git log --oneline
5ce576e 5
30ff21a 4
95eaecd 3
adb04d8 2
29102b1 1
💡 rebase -i の基本の使い方
例えば、3つ前のコミット(95eaecd 3)を修正したい場合は、
$ git rebase -i adb04d8
または、もっと簡単にコミット数を指定して、
$ git rebase -i HEAD~3
これでエディタが立ち上がり、こんな感じの画面が表示されます👇
pick 95eaecd 3
pick 30ff21a 4
pick 5ce576e 5
# Commands:
# p, pick = コミットをそのまま使う
# r, reword = コミットメッセージのみ変更
# e, edit = コミット内容を修正
# s, squash = 前のコミットとまとめてメッセージを変更
# f, fixup = 前のコミットとまとめてメッセージをそのまま使用
# x, exec = shellコマンドを実行
この中のpickという部分を他のコマンドに書き換えることで、コミットを編集できます✨
🚀 reword でコミットメッセージを変更する
コミットメッセージだけを変更したいときは reword が便利!
reword 95eaecd 3
pick 30ff21a 4
pick 5ce576e 5
保存すると再びエディタが開き、メッセージを変更できます。
例えば「3」を「3A」に変更して保存すると完了!
🛠 edit でコミットの中身を修正する
コミットの中身を変更したい場合は edit を使います。
edit 95eaecd 3
pick 30ff21a 4
pick 5ce576e 5
保存すると修正したいコミット直後の状態に戻ります。
修正後に以下のように操作します。
# コミットを修正する場合
$ git add .
$ git commit --amend
# コミットを細かく分割するなど、大きく変更する場合
$ git reset HEAD^
$ git add .
$ git commit --amend
修正が完了したら以下で rebase を再開!
$ git rebase --continue
もし途中でやめたくなったら👇で中止できますよ。
$ git rebase --abort
🥞 squash で複数のコミットを1つにまとめる
コミットを1つにまとめたいときは squash の出番です!
pick 95eaecd 3
squash 30ff21a 4
pick 5ce576e 5
保存すると再びエディタが立ち上がるので、新しいコミットメッセージを入力して保存するとまとめられます!
🧹 fixup でコミットをまとめてメッセージを維持
コミットをまとめてメッセージもそのまま使いたい場合は fixup が便利です。
pick 95eaecd 3
fixup 30ff21a 4
pick 5ce576e 5
これでコミット4はコミット3に吸収され、メッセージは3のまま残ります!
🔄 コミットの順番を入れ替える
コミットの順番を入れ替えたい場合は、並べ替えるだけでOK!
pick 30ff21a 4
pick 95eaecd 3
pick 5ce576e 5
簡単でわかりやすいですね😆
❌ コミットを削除する
コミットを削除したい場合は、単純に該当のコミットを削除します。
pick 95eaecd 3
- pick 30ff21a 4 # 削除したい行
pick 5ce576e 5
保存するとコミット4は削除されます!
📝 まとめ
git rebase -i をマスターすると、コミット履歴がキレイに整理でき、プロジェクトのメンバーにも見やすい履歴を作れますね✨
ぜひいろんなプロジェクトで活用してみてくださいね〜🌈
最後に
この記事が役に立ったら、ぜひ「LGTM」してくれると嬉しいです! 💖
では、また次回の記事でお会いしましょう👋