基礎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
変更を失う可能性がある操作を、意味を理解せず実行しないでください。まず差分を退避するか、復元対象を限定します。
演習: 二つのコミットに分ける
- READMEへ目的を追加し、docsコミットを作る
hello.pyを追加し、featコミットを作るgit log --onelineで二つに分かれたことを確認する- 新しいbranchでメッセージを変更する
git diffを確認する
理解チェック
- working tree、staging、repositoryを区別できる
- コミット前に対象差分を確認できる
- branchを使う目的を説明できる
- 秘密情報を誤公開した際の初動を説明できる
公式資料
次に読む
HTMLとCSS入門で、ブラウザに表示する最初のページを作ります。