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

【総合演習】リモートリポジトリとブランチ操作

GitHubを使ったリモート連携とブランチ操作を組み合わせた実践演習

このレッスンの学習目標

  • リモートリポジトリとの連携を実践
  • ブランチを使った開発フローを体験
  • プッシュ、プル、マージの一連の流れを習得

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

レッスン8〜12で学んだ内容:

  • ✅ GitHubアカウントとSSH設定
  • ✅ リモートリポジトリとの連携
  • ✅ プッシュとプル(git push/pull)
  • ✅ ブランチの基礎(git branch)
  • ✅ マージ操作

これらを組み合わせて、実際の開発フローを体験しましょう!

演習プロジェクト:個人ブログサイトの開発

シナリオ

あなたは個人ブログサイトを開発しています。

  • GitHubでコードを管理
  • 新機能はブランチで開発
  • 完成したらmainブランチにマージ

事前準備

GitHubの準備

  1. GitHubにログイン
  2. 新しいリポジトリ「my-blog-project」を作成(READMEなし、空のリポジトリ)
  3. SSH接続が正常に動作することを確認
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. ローカルリポジトリを初期化
  2. 基本ファイル(README.md、index.html)を作成してコミット
  3. GitHubのリモートリポジトリと連携
  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
💡 解答例を見る
# リポジトリを初期化
git init

# 基本ファイルを作成
echo "# My Personal Blog" > README.md
cat > index.html << 'EOF'
<!DOCTYPE html>
<html>
<head>
    <title>My Blog</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
        <h1>Welcome to My Blog</h1>
    </header>
    <main>
        <p>Coming soon...</p>
    </main>
</body>
</html>
EOF

# コミット
git add .
git commit -m "feat: ブログの初期構成を作成"

# リモートリポジトリを追加(your-usernameを実際のユーザー名に変更)
git remote add origin git@github.com:your-username/my-blog-project.git

# リモートを確認
git remote -v

# mainブランチにプッシュ
git branch -M main
git push -u origin main

演習2:ブランチでの新機能開発

課題

  1. 「About(自己紹介)」ページを追加する機能ブランチを作成
  2. about.htmlファイルを作成
  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
💡 解答例を見る
# 新機能用のブランチを作成
git checkout -b feature/about-page

# Aboutページを作成
cat > about.html << 'EOF'
<!DOCTYPE html>
<html>
<head>
    <title>About Me - My Blog</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
        <h1>About Me</h1>
        <nav>
            <a href="index.html">Home</a> |
            <a href="about.html">About</a>
        </nav>
    </header>
    <main>
        <h2>自己紹介</h2>
        <p>プログラミングが大好きなエンジニアです。</p>
        <p>このブログでは技術的な学びを共有していきます。</p>
    </main>
</body>
</html>
EOF

# index.htmlにもナビゲーションを追加
sed -i '' '/<h1>Welcome to My Blog<\/h1>/a\
        <nav>\
            <a href="index.html">Home</a> |\
            <a href="about.html">About</a>\
        </nav>' index.html

# 変更を確認
git status
git diff

# コミット
git add .
git commit -m "feat: Aboutページとナビゲーションを追加"

# ブランチをリモートにプッシュ
git push -u origin feature/about-page

演習3:プルリクエスト(PR)の作成とマージ

課題

  1. GitHubでプルリクエストを作成(ブラウザで操作)
  2. ローカルでmainブランチに切り替え
  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
💡 解答例を見る
# mainブランチに切り替え
git checkout main

# リモートの最新状態を取得
git pull origin main

# マージされたことを確認
git log --oneline -5

# ローカルのfeatureブランチを削除
git branch -d feature/about-page

# リモートブランチも削除(オプション)
git push origin --delete feature/about-page

# ブランチ一覧を確認
git branch -a

演習4:複数人での開発をシミュレート

課題

別のディレクトリから同じリポジトリをクローンして、別の開発者として作業します。

  1. 別ディレクトリでリポジトリをクローン
  2. スタイルシートを追加
  3. プッシュして、元のディレクトリでプル
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
💡 解答例を見る
# 現在のディレクトリを記憶
pwd

# 親ディレクトリに移動して別の場所にクローン
cd ..
git clone git@github.com:your-username/my-blog-project.git my-blog-project-2
cd my-blog-project-2

# スタイルシートを作成
cat > style.css << 'EOF'
body {
    font-family: Georgia, serif;
    line-height: 1.6;
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
    background: #f4f4f4;
}

header {
    background: #333;
    color: white;
    padding: 1rem;
    margin-bottom: 2rem;
}

nav a {
    color: #fff;
    text-decoration: none;
    margin: 0 10px;
}

main {
    background: white;
    padding: 2rem;
    border-radius: 5px;
}
EOF

# コミットしてプッシュ
git add style.css
git commit -m "style: 基本的なスタイルシートを追加"
git push

# 元のディレクトリに戻る
cd ../my-blog-project

# 変更をプル
git pull

# ファイルが追加されたことを確認
ls -la
cat style.css

演習5:コンフリクトの解決

課題

意図的にコンフリクトを発生させて解決する練習をします。

  1. feature/blog-postブランチを作成
  2. README.mdを編集
  3. mainブランチでも同じ箇所を編集
  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
💡 解答例を見る
# featureブランチを作成
git checkout -b feature/blog-post

# README.mdを編集
cat >> README.md << 'EOF'

## 最新の投稿
- Gitの使い方について
- プログラミング学習のコツ
EOF

git add README.md
git commit -m "docs: 最新の投稿セクションを追加"

# mainブランチに切り替えて同じ箇所を編集
git checkout main
cat >> README.md << 'EOF'

## 人気の投稿
- はじめてのGit
- 効率的な学習方法
EOF

git add README.md
git commit -m "docs: 人気の投稿セクションを追加"

# featureブランチをマージ(コンフリクト発生)
git merge feature/blog-post

# コンフリクトの状態を確認
git status

# README.mdを手動で編集してコンフリクトを解決
# エディタで開いて、両方の変更を保持するように編集
cat > README.md << 'EOF'
# My Personal Blog

## 最新の投稿
- Gitの使い方について
- プログラミング学習のコツ

## 人気の投稿
- はじめてのGit
- 効率的な学習方法
EOF

# 解決後、コミット
git add README.md
git commit -m "merge: feature/blog-postをマージ、両方の投稿セクションを保持"

# ブランチを削除
git branch -d feature/blog-post

演習6:総合演習 - 完全な開発フロー

最終課題

実際の開発を想定して、以下の機能を実装してください:

  1. 新機能: ブログ記事一覧ページ(articles.html)
  2. バグ修正: ナビゲーションリンクの修正
  3. ドキュメント: README.mdの更新
  4. すべての変更をGitHubにプッシュ
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. 記事一覧機能の開発
git checkout -b feature/articles-list

# 記事一覧ページを作成
cat > articles.html << 'EOF'
<!DOCTYPE html>
<html>
<head>
    <title>Articles - My Blog</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
        <h1>All Articles</h1>
        <nav>
            <a href="index.html">Home</a> |
            <a href="about.html">About</a> |
            <a href="articles.html">Articles</a>
        </nav>
    </header>
    <main>
        <h2>記事一覧</h2>
        <ul>
            <li><a href="#">Gitマスターへの道</a> - 2024/01/15</li>
            <li><a href="#">効率的なコーディング術</a> - 2024/01/10</li>
            <li><a href="#">プログラミング入門</a> - 2024/01/05</li>
        </ul>
    </main>
</body>
</html>
EOF

git add articles.html
git commit -m "feat: 記事一覧ページを追加"
git push -u origin feature/articles-list

# 2. mainにマージ(GitHub上でPR作成・マージ後)
git checkout main
git pull

# 3. バグ修正用ブランチ
git checkout -b bugfix/navigation-links

# すべてのHTMLファイルにArticlesリンクを追加
for file in index.html about.html; do
    sed -i '' 's|<a href="about.html">About</a>|<a href="about.html">About</a> |\
            <a href="articles.html">Articles</a>|' $file
done

git add .
git commit -m "fix: すべてのページにArticlesリンクを追加"
git push -u origin bugfix/navigation-links

# 4. mainにマージ後、READMEを更新
git checkout main
git pull

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

個人ブログサイトのソースコードです。

## 機能
- ホームページ
- 自己紹介ページ
- 記事一覧ページ
- レスポンシブデザイン

## 技術スタック
- HTML5
- CSS3
- Git/GitHub

## セットアップ
1. リポジトリをクローン
2. index.htmlをブラウザで開く

## 最新の投稿
- Gitの使い方について
- プログラミング学習のコツ

## 人気の投稿
- はじめてのGit
- 効率的な学習方法
EOF

git add README.md
git commit -m "docs: READMEを最新の状態に更新"
git push

# 最終確認
git log --oneline --graph -10
git status

演習のまとめ

この総合演習で実践したこと:

  • ✅ リモートリポジトリの作成と連携
  • ✅ ブランチを使った機能開発
  • ✅ プルリクエストの作成とマージ
  • ✅ 複数環境での同期
  • ✅ コンフリクトの解決
  • ✅ 実際の開発フロー

🎯 スキルチェックリスト

以下ができれば、Git/GitHubの基本操作は完璧です!

  • GitHubでリポジトリを作成できる
  • SSH接続でリモートと通信できる
  • ブランチを作成して機能開発できる
  • プッシュとプルで同期できる
  • プルリクエストを作成できる
  • コンフリクトを解決できる
  • 適切なブランチ戦略を使える

次のステップ

  • より高度なGit機能(rebase、cherry-pick)
  • チーム開発のベストプラクティス
  • CI/CDとの統合
  • Git flowやGitHub flowの習得

素晴らしい!これでGitの基本操作はマスターしました!

さらに学習を続けるには

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

無料で続きを学ぶ

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

学習進捗の自動保存

コース修了証明書の発行