Git と Gitea のラボ:自分専用の Git サーバーでクローン、コミット、プッシュを学ぶ

このラボは、各生徒に専用の Gitea を渡します。GitHub のような Web 画面を持つ、小さなセルフホスト型の Git サーバーで、コミットが2つあるリポジトリが入っています。隣のターミナルからリポジトリをクローンし、ファイルを作り、ステージして、コミットしてプッシュし、そのコミットを Web 画面で確認します。

作るべき GitHub のアカウントも、インストールするものもないので、バージョン管理の最初の授業に向いています。

生徒が学ぶこと

バージョン管理の一連の流れです。git config、git clone、git status、git add、git commit、git log、git push と、それぞれが何を示すかを学びます。Web 画面で履歴の先頭に自分のコミットがあることを確かめ、ブラウザーでファイルを編集して、手元に取り込みます。次の授業には、ブランチとプルリクエスト、ブラウザーとターミナルで同じ行を編集して起こすコンフリクト、git revert での取り消しがよいでしょう。

ブラウザーで動かす

Gitea のアカウントは student で、パスワードは student です。リポジトリは student/hello-git です。

  1. コンテナーのページを開く. バーの「つくる」を開き、「コンテナーを実行」を選びます。ページは誰でも開けて、Git ラボと SQL ラボはアカウントなしで起動できます。ほかのラボには無料アカウントが必要です。アカウントを作成してサインインし、「起動」を押します。
  2. ラボを探す. 「サンプルラボ」のカードにすべてのサンプルが並んでいます。Gitea で学ぶ Gitを探します。
  3. 「起動」を押す. 「起動」はそのまま1回の操作で実行します。「先にファイルを編集」は compose ファイルを開くので、起動する前に変更できます。
  4. 開く. ラボのページの「ブラウザーで」で Gitea を押し、hello-git を見ます。ターミナルでは git clone http://gitea:3000/student/hello-git.git を実行します。ターミナルはサービス名で Gitea に届きます。README に各手順の説明があります。

GitHub のコード

compose ファイル1つです。Gitea は通常のアカウントで動き、追加の権限は不要です。自分のマシンでも動きます。最初のリポジトリを変えたい場合はフォークしてください。

このラボの基本レッスン

Git Basics と Git Basics 2 は、このラボで進める小さなレッスンで、各手順に説明と、生徒のターミナルにコマンドを入力する「実行」ボタンが付いています。Git Basics ではリポジトリ、フォルダー、ファイル、最初のコミットを作ってプッシュします。Git Basics 2 ではブランチで作業してプッシュし、Gitea のプルリクエストでマージして、そのマージを手元に取り込みます。

無料の個人アカウントには、ホームにある Basics モジュールで配布されます。どの学校もライブラリの Basics フォルダから自分のモジュールにコピーでき、新しい学校ではサンプルモジュールの Basics (Sample) に入っています。どちらも意図的に小さくしてあり、ラボで進めるレッスンとは何かを教員に見せるためのもので、残りはラボが担います。変更したい場合は、どちらかを自分のモジュールにコピーしてください。

課題として出す

指定した内容のコミットをプッシュし、その履歴を提出するよう生徒に求めます。

  1. ラボを作る. モジュールで課題を追加し、「コンテナーラボ」のカードを選んでから「GitHub リポジトリ」を選びます。https://github.com/mitsurutech/lab-git-gitea とブランチ main を指定します。compose ファイルは既定の compose.yaml です。変更したい場合は、先にリポジトリをフォークしてください。
  2. 公開して試す. 「公開」すると、確認したコミットに固定されるので、あとでリポジトリを変更しても、すでに出したラボは変わりません。まず自分のコピーを起動してください。
  3. 配布する. ほかの課題と同じように配布します。期限を付けることもでき、課題には何をするか、何を提出するかを書いておきます。
  4. 提出物を採点する. 生徒のコピーを開いて提出された内容を確認し、採点します。足りない場合は理由を書いて差し戻します。

よくある質問

生徒に GitHub のアカウントは必要ですか?
いいえ。生徒のラボは、それぞれ専用の Gitea を起動するので、生徒がプッシュするのは自分のラボのコピーに属し、ほかにはどこにもない Git サーバーです。
作業はセッションをまたいで保存されますか?
はい。Gitea はリポジトリとデータベースを、プラットフォームが保存する名前付きボリュームに置くので、生徒がプッシュした内容は次回もそのまま残ります。
Gitea ラボで、生徒はどの Git コマンドを練習しますか?
毎日使う一連の流れで、git config、git clone、git status、git add、git commit、git log、git push と、それぞれが何を示すかです。そのあと、ユーザー student、パスワード student で Gitea の Web インターフェースにサインインし、履歴の先頭に自分のコミットを見つけます。