Github classroom

Github classroom とは

Github classroom は,Github を用いた授業支援プロジェクトです. コードのレビューや,採点などに使うことができます.

Github は,無償プランでは,基本的に全世界に公開 (public) リポジトリしか 使うことができません. しかしながら,Github classroom でのレポート課題のリポジトリは,他の人に見えないような私的 (private) な リポジトリとなっていますので誰かに覗かれる心配は(パスワードなどがクラックされない限り)ありません.

ここでは,課題提出に関わる部分だけを説明します.

Github classroom の使い方

課題の取り込み

まず,下記にアクセスしてください.

https://classroom.github.com/a/TMlFYsEk <--- 2020 年度はこれをつかってください

GitHub にサインインしていれば,受け入れるか (accept) かどうかを聞いてきます. 受け入れると課題のテンプレートが GitHub 上でコピー(clone)されます.

これで,レポートのテンプレートが各自に配布されたことになります. もし,この作業で失敗して,課題のテンプレートがないリポジトリが作成された場合は, 教員に相談してください.

以下では,classroom の課題をどのように使うかを説明します. 大きく分けると,

  • git clone によるレポートテンプレートの複製
  • git branch による新規ブランチの作成と git checkout によるブランチ移動
  • 編集作業,レポート作成
  • git push によるリポジトリの更新
  • 編集後 Pull Request (PR)による課題終了を教員にお知らせ送信

git clone による複製

次に,コピーされた各自のテンプレートを,自分の作業計算機へクローンしてきます. クローンのやり方は,前述の git clone と同様です. "clone or download" ボタンを使い リンク先の URL をコピーします.その次に Jupyter などの端末上で

git clone `コピーしたURL`

を行います.これでリポジトリのコピーが自分の使っている計算機に落ちてきます. 後の編集作業は自分の計算機で行います.

git branch による作業開始ポイントの設定

Github classroom では,ユーザーに独自の改変を行わせるために, 原型のテンプレートは維持したままで,別ブランチを編集することを推奨します. これにはブランチ(分岐)と呼ばれるやり方を使います.

ブランチ作成を行っても行わなくてもよいのですが,行うと

  • もとの課題テンプレートを保持したまま,いろいろな変更を試すことができる. (これは普通のブランチの使い方です)
  • ”もとのリポジトリに,修正いれたので良ければ採用してね” という信号 (Pull Request) を送ることができるようになります.

課題では,後者の Pull Request を利用して,”課題の提出をいつ行ったか" ということ明示的に示せるようにしています. ブランチを切って,いついつまでに終わったということを教員に明示できるようになるので, 早く終われば早いほど,そっちのが点数が高くなるという話になります.

最初のテンプレートを複製した段階では, master と呼ばれるバージョン (ブランチ) にいます. このまま master ブランチで変更していくと,クローンしたばっかりの 状態との差分をとるのが面倒になるので,新しい作業ブランチを作ります. この操作をブランチを切ると呼びます.

ブランチをきる作業は,どのレポート課題でも 複製後できるだけやる ようにしてください.

例えば新たなブランチ WorkInProg (名前はなんでも良いです.これは Work in Progress の略ですが) を 作るとしましょう.これには先ほど PC 上に落ちてきた,リポジトリ上で,

git branch 'WorkInProg'

と打てば,あらたなブランチが作成されます. 自分がどのブランチにいるかは git branch コマンド で調べられます.

$ git branch
* master
  WorkInProg

上記は,ブランチ WorkInProg は作成されたけど,作業しているブランチは星印がついている master ブランチである ことを示しています.

次に ブランチを WorkInProg に移すには git checkout コマンドを使います

$ git checkout WorkInProg

これでブランチが移動できます. これで編集作業の準備ができました.

編集作業

リポジトリ内にファイルを追加したり編集したりしてください. 今回の作業では, README.md というファイルの学籍番号と氏名のところを 適宜修正することをすることが最小限の作業になります.

その他,色々なファイルを追加してみたりしてから

  1. リポジトリに管理させるファイルを git add コマンドを使って追加し
  2. git commit を使って,ローカルリポジトリに保存します.

これは前述の git コマンドのところでやった話になります.

Git push によるアップロード

次に github へアップロードをかけます.これには git push を使います. 通常引数はいらないのですが,現在のPCで作業しているブランチは, WIP のはずで,これは github 上には存在しないブランチです. この場合は,あらたなブランチで作業していることをリモート側である GitHub にお知らせする必要があるので,

git push -u origin WorkInProg

のように, WorkInProg ブランチを登録します.

警告

なお,GitHub から,WorkInProg ブランチをクローンしたい場合は,

$ git clone -b ブランチ名 https://リポジトリのアドレス

のように,クローンします.この場合は

$ git clone -b WorkInProg GithubリポジトリのURLをペースト

のようにすることで特定のブランチをクローンできます.

Pull Request 送付による提出完了の送信

最後に pull request を送ります.これは課題を提出した先生に提出したよという お知らせをするためのものなので,必ず行ってください.

僕の方で,確認したら merge を行って,master ブランチに統合することで受領したことになります.