0Pricing
DevOps Bootcamp · レッスン

履歴のためのインタラクティブRebase

インタラクティブRebaseを使ってコミット履歴を書き換え、プッシュ前にコミットの統合、並べ替え、メッセージの編集を行います。

「履歴のためのインタラクティブRebase」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

インタラクティブリベースを始める

強力なGitのツール、インタラクティブリベースへようこそ。これは、他の人と共有する前に、プロジェクトのコミット履歴を書き換えるための機能です。

コミットのためのタイムマシンのようなものだと考えてください。変更を整理、統合、並べ替えすることで、作業内容を明確で直線的な履歴に整えられます。

履歴を整理する理由

なぜ履歴を書き換える必要があるのでしょうか。

  • 明確さ:プロジェクトのコミットログを読みやすく、理解しやすくできます。
  • 簡潔さ:小さな段階的コミットを、意味のある1つの変更にまとめられます。
  • デバッグ:履歴が整理されていると、git bisectのようなツールで、バグが混入した箇所を見つけやすくなります。
  • よりよいプルリクエスト:整理された変更内容を共同作業者に提示できます。

インタラクティブリベースの開始

インタラクティブリベースを開始するには、git rebase -iコマンドを使います。どこまでさかのぼるかを指定する必要があります。

たとえば、現在のブランチの直近3つのコミットをリベースする場合は、次のように実行します。

git rebase -i HEAD~3

これにより、直近3つのコミットと使用可能なコマンドが表示されたエディターが開きます。

リベースエディターのコマンド

インタラクティブリベースを開始すると、Gitはコミットの一覧と手順が記載されたテキストエディターを開きます。各コミットは、次のいずれかのコマンドで始まります。

  • pick:コミットをそのまま使用します。
  • reword:コミットを使用しますが、メッセージを編集します。
  • edit:コミットを使用しますが、変更を修正するために処理を一時停止します。
  • squash:直前のコミットと統合し、メッセージもまとめます。
  • fixup:直前のコミットと統合しますが、このコミットのメッセージは破棄します。
  • drop:コミットを完全に削除します。

例:コミットメッセージの変更

コミットメッセージに入力ミスがあるとします。rewordを使って修正できます。変更したいコミットの行で、pickをrewordに変更します。

pick 5a6b7c8 Add new feature
pick 1d2e3f4 Fix typo in docs
reword 9g0h1i2 Implement login screen

エディターを保存して閉じると、Gitは9g0h1i2のコミットメッセージを編集するよう求めます。

例:コミットの統合

関連する小さなコミットをいくつも作成し、それらを1つにまとめたい場合があります。そのようなときはsquashを使います。

pick a1b2c3d Initial feature commit
squash e4f5g6h Add more details
fixup i7j8k9l Fix small bug

ここでは、e4f5g6hがa1b2c3dに統合され、両方のメッセージがまとめられます。i7j8k9lもa1b2c3dに統合されますが、そのメッセージは破棄されます(fixup)。

例:コミットの削除

不要になった実験的なコミットがある場合は、履歴からdropできます。pickをdropに変更するか、その行を完全に削除してください。

pick 1122334 Initial setup
drop 5566778 Test experimental feature
pick 9900112 Add user authentication

保存すると、コミット5566778はブランチの履歴から完全に削除されます。

例:コミットの並べ替え

コミットの順序を変更することもできます。エディターで行を切り取って貼り付けるだけで、順序を入れ替えられます。Gitは新しい順序で変更を適用します。

元の順序:

pick abcdef1 Add feature A
pick 1234567 Add feature B

並べ替え後:

pick 1234567 Add feature B
pick abcdef1 Add feature A

コミットが互いの変更に依存している場合、順序を変えるとコンフリクトが発生する可能性があるため、注意してください。

鉄則:共有された履歴をリベースしない

これは非常に重要です。すでに共有リモートリポジトリ(GitHubやGitLabなど)へプッシュされ、他の人がプルしている可能性のあるコミットは、決してリベースしないでください。

リベースを行うと、コミットIDが書き換えられます。他の人が元のコミットを基に作業している場合、リベース後のコミットはまったく別の履歴として扱われるため、関係者全員に大きなコンフリクトと混乱が生じます。

リベースするのは、自分のローカルブランチだけに存在するコミットに限定してください。

リベースコマンドの確認

3つのコミット、A (Initial)、B (Minor fix)、C (Refactor)があるとします。BをAに統合し、Aの元のメッセージを残したうえで、Cはそのままにしたい場合、インタラクティブリベースエディターではどのコマンドを使いますか(古い順から新しい順)。

インタラクティブリベースのまとめ

強力なgit rebase -iコマンドについて学びました。

  • ローカルのコミット履歴を書き換えられます。
  • メッセージをrewordしたり、コミットをsquashまたはfixupしたり、不要な変更をdropしたり、コミットの順序を変更したりできます。
  • 鉄則を常に覚えておきましょう。共有リモートへすでにプッシュされたコミットは、決してリベースしないでください。

インタラクティブリベースを使いこなすと、プロジェクトの履歴を整理し、理解しやすく保てます。

よくある質問

「履歴のためのインタラクティブRebase」レッスンは無料ですか?

はい。「履歴のためのインタラクティブRebase」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「履歴のためのインタラクティブRebase」で何を学びますか?

インタラクティブRebaseを使ってコミット履歴を書き換え、プッシュ前にコミットの統合、並べ替え、メッセージの編集を行います。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「履歴のためのインタラクティブRebase」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. マージコンフリクトの手動解決
  2. 履歴のためのインタラクティブRebase
  3. コミットのCherry-pick
  4. Git Rerere で競合解決を再利用する
← DevOps Bootcampに戻る