基礎LESSON 04

この教材で学ぶこと 差分を確認し、commitとbranchで変更を安全に管理します。

GitとGitHub入門

対象読者: コードを保存し、変更履歴を安全に管理したい初学者。

この教材でできるようになること

  • GitとGitHubの役割を区別できる
  • 変更を確認してからコミットできる
  • branchを使って作業を分離できる
  • push前に秘密情報の混入を確認できる

1. GitとGitHubは別物

Gitは手元の変更履歴を管理する分散バージョン管理システムです。GitHubはGitリポジトリを保存・共有し、レビューやIssueなどの共同作業を提供するサービスです。

作業ファイル → staging area → local repository → remote repository
              git add       git commit          git push

2. 最初のコミット

練習用ディレクトリで実行します。

git init
printf '# hello-git\n' > README.md
git status
git add README.md
git diff --cached
git commit -m "docs: add project overview"
git log --oneline

git addは「次のコミットへ含める変更を選ぶ」操作です。毎回git statusとgit diff --cachedを確認すると、意図しないファイルを含めにくくなります。

3. 良いコミットの単位

一つのコミットには一つの目的を持たせます。

  • 良い例: テスト追加と、そのテストを通す実装
  • 悪い例: 機能追加、無関係な整形、設定変更をまとめる

メッセージは「何をしたか」が分かる命令形や簡潔な説明にします。

feat: add score validation
fix: handle empty score list
docs: explain local setup

4. branchで作業を分ける

git switch -c feature/score-validation
# ファイルを編集
git add src tests
git commit -m "feat: validate score range"
git switch main

branchはディレクトリのコピーではなく、コミット列を指す名前です。作業中の変更が残った状態で切り替える前にgit statusを確認します。

5. remoteと同期する

git remote -v
git fetch origin
git log --oneline --decorate --graph --all
git push -u origin feature/score-validation

fetchはremoteの状態を取得しますが、自分のbranchへ自動統合しません。状況を見てからmergeまたはrebaseを選べます。

6. 秘密情報をコミットしない

次のようなものをGitへ入れてはいけません。

  • APIキー、アクセストークン、パスワード
  • .envや秘密鍵
  • 顧客情報、個人情報、非公開URL
  • 本番データのdump

.gitignoreは未追跡ファイルを除外しますが、すでにコミットした秘密を消す機能ではありません。誤って公開した場合は、ファイル削除より先に認証情報を無効化・再発行します。

7. 元に戻す前に状態を読む

git status
git diff
git log --oneline -5

変更を失う可能性がある操作を、意味を理解せず実行しないでください。まず差分を退避するか、復元対象を限定します。

演習: 二つのコミットに分ける

  1. READMEへ目的を追加し、docsコミットを作る
  2. hello.pyを追加し、featコミットを作る
  3. git log --onelineで二つに分かれたことを確認する
  4. 新しいbranchでメッセージを変更する
  5. git diffを確認する

理解チェック

  • working tree、staging、repositoryを区別できる
  • コミット前に対象差分を確認できる
  • branchを使う目的を説明できる
  • 秘密情報を誤公開した際の初動を説明できる

公式資料

次に読む

HTMLとCSS入門で、ブラウザに表示する最初のページを作ります。