時をかける開発者

GitBeginner
オンラインで実践に進む

はじめに

あなたは今、タイムマシン開発プロジェクトに取り組んでいるエンジニアです。そこへ突如、未来の自分自身が現れ、「現在のコードベースに重大なバグがある!」と警告してきました。あなたは急いで現在の作業を保存し、バグを修正してから、元のタスクに戻らなければなりません。このチャレンジでは、緊迫したタイムトラベルのシナリオを通じて、Git のスタッシュ(stash)スキルの習熟度をテストします。

スタッシュ、修正、そして再開

初期状態

あなたは ~/project ディレクトリにいます。time-machine ディレクトリは新しい Git リポジトリであり、以下のファイルが含まれています。

  • main-console.txt(内容:"Bug: Temporal Flux Unstable")
  • flux-capacitor.txt(内容:"Work in progress")
  • new-feature.txt(内容:"Untracked feature")

git status コマンドを使用して、リポジトリの現在の状態を確認できます。

タスク

  1. 追跡されていないファイル(untracked files)を含め、現在の変更をスタッシュに退避させてください。
  2. master ブランチで「重大なバグ」を修正します。main-console.txt の内容を "Fixed: Temporal Flux Stabilized" に更新してください。
  3. スタッシュした変更から、future-upgrades という名前の新しいブランチを作成してください。
  4. master ブランチで行ったバグ修正が、future-upgrades ブランチにも反映されていることを確認してください。

要件

  • すべての操作は ~/project/time-machine ディレクトリ内で実行してください。
  • 元の変更(追跡対象および未追跡の両方)が新しいブランチに存在することを確認してください。
  • main-console.txt のバグ修正が、masterfuture-upgrades の両方のブランチに存在する必要があります。

チャレンジ完了後、リポジトリは以下のようになっているはずです。

master ブランチの状態:

main-console.txt (content: "Fixed: Temporal Flux Stabilized")

future-upgrades ブランチの状態:

main-console.txt (content: "Fixed: Temporal Flux Stabilized")  ## master からのバグ修正が含まれている
flux-capacitor.txt (content: "Work in progress")              ## 元の追跡されていた変更
new-feature.txt (content: "Untracked feature")                ## 元の未追跡ファイル

注意:この状態を実現するには、future-upgrades ブランチで作業中の変更を保持しつつ、両方のブランチにバグ修正が適用されていることを確実にする必要があります。

✨ 解答を確認して練習

まとめ

このチャレンジでは、緊急事態を想定したシナリオで Git stash を使用する練習を行いました。作業中の内容(未追跡ファイルを含む)を素早く保存し、コンテキストを切り替えて重大な問題を修正し、その後スタッシュした変更から新しいブランチを作成する方法を学びました。これらのスキルは、予期せぬタスクが発生した際にスムーズなワークフローを維持するために不可欠であり、作業を失ったり集中力を切らしたりすることなく、複数の責任を並行してこなすことを可能にします。

Git stash は変更を一時的に保存するための強力なツールですが、短期間の保存に最適であることを覚えておいてください。長期的な作業や大規模な機能開発には、専用のブランチを作成する方が適切な場合が多いです。これらのスキルを磨き続け、どのような時空の歪み(開発上のトラブル)が発生しても対処できるように備えましょう!