バージョン管理とGit / 約20分
なぜバージョン管理が必要か: git init / add / commit / log
なぜこれを学ぶか
「最終版_20240301_修正2.js」というファイル名でコードを管理したことはありませんか? Gitはその混乱を解決し、「誰が・いつ・何を・なぜ変えたか」を永遠に記録します。
バージョン管理 とは、ファイルの変更履歴を記録・追跡する仕組みです。Gitはその事実上の業界標準で、ほぼすべての現場で使われています。
git init でリポジトリを初期化し、git add ファイル名(または git add . で全変更)をステージング(記録候補に追加)し、git commit -m "メッセージ" で確定(スナップショット)します。
コミットメッセージ は「なぜ変えたか」を書くのが鉄則。fix bug より fix: ログイン失敗時にリダイレクトループが発生するバグを修正 の方が、1年後の自分や他人に伝わります。
git log で履歴を確認できます。git log --oneline は1行表示で見やすく、git log --graph はブランチの分岐も視覚化します。
ステージングエリア の存在がGitの重要な特徴です。変更ファイルの中から「今回のコミットに入れるものだけ」を選べる。これにより、1つの作業で複数のコミットを分けて整理できます。
重要ポイント
- init → add → commit の3ステップが基本
- コミットメッセージは「なぜ」を書く
- ステージングで「今コミットする変更」を選別できる
理解度チェック
選ぶと即座に解説が表示されます。
`git add .` を実行した後、まだ `git commit` していない。この状態を正しく説明しているのは?
ヒントを見る
Gitには「作業ディレクトリ → ステージング → リポジトリ」の3段階があります。addはどこまでの操作でしょうか。
コーディング演習実際に書く
Gitのコミット操作を理解するため、「コミット情報を解析する関数」を作成してください。コミットメッセージ文字列を受け取り、`{ type, description }` オブジェクトを返します。形式: `"feat: ユーザー登録機能を追加"` → `{ type: "feat", description: "ユーザー登録機能を追加" }`。コロン+スペースで分割し、形式が不正な場合(コロンなし)は `{ type: "unknown", description: メッセージ全体 }` を返します。
スキルセルフチェック
このレッスンの内容をどの程度理解できましたか?