メインコンテンツへスキップ
レッスン 7 / 15推定時間: 30

【中間演習】ローカルでのGit操作

これまで学んだローカルGitの操作を実践形式で復習しましょう

このレッスンの学習目標

  • リポジトリの作成から履歴管理まで一連の流れを実践
  • ファイルの追跡、コミット、履歴確認を習得
  • 変更の取り消し操作を確実に身につける

これまでの学習内容の振り返り

レッスン1〜6で学んだ内容:

  • ✅ バージョン管理の概念
  • ✅ Gitのインストールと初期設定
  • ✅ リポジトリの作成(git init)
  • ✅ ファイルの追跡(git add)
  • ✅ 変更の記録(git commit)
  • ✅ 履歴の確認(git log/status)
  • ✅ 変更の取り消し(git restore)

これらを実際のプロジェクトで使ってみましょう!

演習プロジェクト:簡単なToDoアプリの開発

プロジェクトの概要

簡単なToDoアプリケーションを作成しながら、Gitの操作を実践します。

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

演習1:プロジェクトの初期化

課題

  1. Gitリポジトリを初期化する
  2. ユーザー名とメールアドレスが設定されているか確認する
  3. 初期ファイル(README.md)を作成してコミットする
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
💡 解答例を見る
# Gitリポジトリを初期化
git init

# 設定を確認
git config user.name
git config user.email

# READMEファイルを作成
echo "# ToDo App" > README.md
echo "シンプルなToDoアプリケーションです。" >> README.md

# ステータスを確認
git status

# ファイルを追加してコミット
git add README.md
git commit -m "docs: プロジェクトのREADMEを作成"

演習2:基本ファイルの作成と追跡

課題

  1. HTMLファイル(index.html)を作成する
  2. CSSファイル(style.css)を作成する
  3. JavaScriptファイル(app.js)を作成する
  4. それぞれを別々のコミットで記録する
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
💡 解答例を見る
# HTMLファイルを作成
cat > index.html << 'EOF'
<!DOCTYPE html>
<html>
<head>
    <title>ToDo App</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <h1>My ToDo List</h1>
    <div id="app"></div>
    <script src="app.js"></script>
</body>
</html>
EOF

git add index.html
git commit -m "feat: HTMLの基本構造を作成"

# CSSファイルを作成
cat > style.css << 'EOF'
body {
    font-family: Arial, sans-serif;
    max-width: 600px;
    margin: 0 auto;
    padding: 20px;
}
EOF

git add style.css
git commit -m "style: 基本的なスタイルを追加"

# JavaScriptファイルを作成
echo "console.log('ToDo App Started');" > app.js
git add app.js
git commit -m "feat: JavaScriptファイルを追加"

# 履歴を確認
git log --oneline

演習3:機能の追加と履歴管理

課題

  1. ToDoアイテムを追加する機能を実装する
  2. スタイルを改善する
  3. 各変更を意味のある単位でコミットする
  4. 履歴を様々な方法で確認する
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
💡 解答例を見る
# ToDo機能を追加
cat > app.js << 'EOF'
const todos = [];

function addTodo(text) {
    todos.push({
        id: Date.now(),
        text: text,
        done: false
    });
    console.log('ToDo added:', text);
}

// テスト
addTodo('Gitを学ぶ');
EOF

git add app.js
git commit -m "feat: ToDo追加機能を実装"

# スタイルを改善
cat >> style.css << 'EOF'

h1 {
    color: #333;
    border-bottom: 2px solid #4CAF50;
    padding-bottom: 10px;
}

.todo-item {
    padding: 10px;
    margin: 5px 0;
    background: #f5f5f5;
    border-radius: 5px;
}
EOF

git add style.css
git commit -m "style: 見出しとToDoアイテムのスタイルを追加"

# 履歴を確認
git log --oneline
git log --graph --oneline
git log -p -2

演習4:変更の取り消しとステージング操作

課題

  1. ファイルに間違った変更を加える
  2. 変更を取り消す
  3. 複数のファイルを変更して、一部だけステージングする
  4. ステージングエリアから取り消す
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
💡 解答例を見る
# 間違った変更を加える
echo "間違ったコード" >> app.js
cat app.js

# 状態を確認
git status
git diff

# 変更を取り消す
git restore app.js
cat app.js

# 複数のファイルを変更
echo "/* 新しいスタイル */" >> style.css
echo "// 新しい機能" >> app.js
echo "## 更新情報" >> README.md

# 状態を確認
git status

# 一部だけステージング
git add style.css
git status

# ステージングから取り消す
git restore --staged style.css
git status

# すべての変更を破棄
git restore .
git status

演習5:.gitignoreの活用

課題

  1. 設定ファイル(config.json)を作成する
  2. ログファイル(debug.log)を作成する
  3. .gitignoreファイルを作成して、これらを除外する
  4. 除外が正しく機能しているか確認する
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
💡 解答例を見る
# 設定ファイルとログファイルを作成
echo '{"apiKey": "secret123"}' > config.json
echo "2024-01-01 10:00:00 - App started" > debug.log

# 状態を確認(両方のファイルが表示される)
git status

# .gitignoreを作成
cat > .gitignore << 'EOF'
# 設定ファイル
config.json

# ログファイル
*.log

# 一時ファイル
*.tmp
EOF

# .gitignoreを追加
git add .gitignore
git commit -m "chore: .gitignoreファイルを追加"

# 状態を確認(config.jsonとdebug.logが表示されない)
git status

# 無視されているファイルを確認
git status --ignored

演習6:総合演習

最終課題

実際の開発フローを想定して、以下のタスクを実行してください:

  1. 新機能(ToDoの削除機能)を追加
  2. バグを発見したと仮定して修正
  3. READMEを更新
  4. 作業中に間違えたと仮定して、最後のコミットを修正
  5. プロジェクトの最終的な履歴を確認
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
💡 解答例を見る
# 削除機能を追加
cat >> app.js << 'EOF'

function deleteTodo(id) {
    const index = todos.findIndex(todo => todo.id === id);
    if (index > -1) {
        todos.splice(index, 1);
        console.log('ToDo deleted:', id);
    }
}
EOF

git add app.js
git commit -m "feat: ToDo削除機能を追加"

# バグ修正(findIndexの戻り値チェックを改善)
sed -i '' 's/index > -1/index !== -1/g' app.js  # Mac
# sed -i 's/index > -1/index !== -1/g' app.js  # Linux

git add app.js
git commit -m "fix: 削除機能の条件判定を修正"

# READMEを更新
cat >> README.md << 'EOF'

## 機能
- ToDoの追加
- ToDoの削除
- シンプルなUI
EOF

git add README.md
git commit -m "docs: READMEに機能一覧を追加"

# タイポがあったと仮定して修正
echo "" >> README.md
echo "## 使い方" >> README.md
echo "1. index.htmlをブラウザで開く" >> README.md
git add README.md
git commit --amend -m "docs: READMEに機能一覧と使い方を追加"

# 最終的な履歴を確認
git log --oneline --graph
git log --stat -3

# プロジェクトの統計情報
git shortlog -sn

まとめ

この中間演習で実践したこと:

  • ✅ プロジェクトの初期化から開発まで一連の流れ
  • ✅ 意味のある単位でのコミット作成
  • ✅ 様々な履歴確認方法
  • ✅ 間違いを修正する各種コマンド
  • ✅ .gitignoreでの除外設定

🎯 チェックリスト

以下ができるようになっていれば、基礎は完璧です!

  • git initでリポジトリを作成できる
  • git addgit commitで変更を記録できる
  • git statusで現在の状態を把握できる
  • git logで履歴を確認できる
  • git restoreで変更を取り消せる
  • .gitignoreでファイルを除外できる
  • 意味のあるコミットメッセージが書ける

次のレッスンからは、GitHubを使ったリモートリポジトリとの連携を学びます!

さらに学習を続けるには

素晴らしい学習ペースです!次のレッスンに進むには、無料会員登録をお願いします。無料会員では各コース3レッスンまで学習できます。

無料で続きを学ぶ

各コース3レッスンまで学習可能

学習進捗の自動保存

コース修了証明書の発行