KUT経・マネ/プログラミング系授業
プログラミングをしていると、しばしば、以前の状態に戻したいということがあります。これを実現する最も単純な方法は、ときどきファイルにバージョン入りで別名をつけ、別ファイルとして保存しておくことでしょう。
たとえば、code.pyというソースコードを編集している開発者がいるとします。ある時点で機能が安定したら、さらに機能を追加する前に、開発者はいつでもこのバージョンに戻ってこられるようにするために、code_ver1.pyという別名を付けてバージョン1として保存しておけば良いでしょう。同様に、code_ver2.py、code_ver3.pyというファイルが次々と出来上がっていくでしょう。
開発期間が短ければ、これでも何とかなるかもしれません。しかし、比較的小さなプロジェクトでも、時間が経つにつれてファイルの数は膨大になるのが普通です。そうすると、どのバージョンがどんな状態だったかすぐに分からなくなります。
これを解決するために、開発者は、たとえばエクセルのようなスプレッドシードに、バージョン名とその内容、作成者の氏名、作成日時を記録していくかもしれません。

これはある種のバージョン管理であると言えます。これに、さらに以下のような機能を追加すればもっと便利でしょう。
Gitはこうした機能を実現する仕組みです。Gitは、Linuxの開発者であるLinus TorvaldsがLinuxの共同開発を進めるために開発したツールです。Gitでは、アプリケーション開発など、一つのプロジェクトに関わる全てのファイルをリポジトリという特別な装置によって管理します。
リポジトリは、通常、作業ディレクトリとよばれる一つのディレクトリの中に収められた状態で存在し、作業ディレクトリの中にあるファイルの現在の状態や過去のバージョンを管理しています。リポジトリの正体は、作業ディレクトリの中にある.gitという隠しフォルダです。

一方GitHubはインターネット上にリポジトリを置くためのサービスです。インターネット上のリポジトリをリモートリポジトリと呼びます。

リモートリポジトリに対して、開発者のパソコン上に存在するリポジトリをローカルリポジトリと呼びます。GitHubを用いると、複数の開発者が共通のリモートリポジトリを介して共同開発を行うことができます。
Gitを用いると、リモートリポジトリとローカルリポジトリを同期させることができます。リモートリポジトリをローカルと同じ状態に同期させることをプッシュ、その逆をプルと言います。共同開発者は、プルによってローカルの状態を最新にしたあと、自分の担当部分の作業を進め、作業が終わったらプッシュによって作業の結果をリモートにアップロードすることができます。
| おもなGit用語 | 意味 |
|---|---|
| プッシュ | リモートの状態をローカルの状態に同期 |
| プル | ローカルの状態をリモートの状態に同期 |
| コミット | 作業をリポジトリの履歴に記録する |
GitHubのリモートリポジトリには、プライベートリポジトリとパブリックリポジトリがあります。パブリックリポジトリは誰でも見ることができ、パッケージ公開などに用いられます。一方パブリックリポジトリは自分と共同開発者だけが閲覧できるので、個人的な用途や、グループでの研究開発などに用いられます。
| リポジトリの種類 | 書き込み権限 | 閲覧権限 |
|---|---|---|
| プライベート | 自分と共同開発者 | 自分と共同開発者 |
| パブリック | 自分と共同開発者 | 誰でも |
本講義では、課題の提出にGitHub classroomというGitHubの教育用サービスを活用します。GitHubは、課題をリモートリポジトリとして学生に配布する機能を提供します。本講義では、課題リポジトリはプライベートリポジトリにしますので、学生個人と担当教員だけが閲覧できます。
Gitは今すぐにでも使うことができますが、GitHubを利用するには、まずGitHubのサイトでユーザー登録をしてアカウントを作成する必要があります。すでにアカウントをお持ちの方は本節を読み飛ばして構いません。
インターネットブラウザでGitHubのサイトに行き、画面右上の”Sign up”をクリックします。
“Create your account”という画面になりますので、以下の項目を入力します。

ユーザーネームを作成するときは、以下の点にご注意ください。
パスワードを決めるときは、以下の点にご注意ください。
ユーザー名等の入力を終えたら、”Verify your account”の項目でロボットでないことを証明してください。
“Create account”をクリックします。
登録に用いたアドレスに8桁の検証コードが送信されるので、メールボックスを確認してコードを入力してください。

これでアカウントが作成されました。ユーザー名とパスワードを求められますので、入力してください。

次に”How many…“などパーソナライゼーションのための質問を幾つかされますが、画面下部のskip personalizationをクリックすれば全てスキップできます。

アカウントを作成したら、Emailの公開設定をします。GitHubにログインして、GitHubのemail設定を開き、Keep my email address privateをONにしてください。これにより、Emailアドレスは非公開になります。Primary email addressの欄に次のように表示されていることを確認してください。
Because you have email privacy enabled, xxxx@xxxx.xx.xx will be used for account-related notifications as well as password resets. ????????+kouka-taro@users.noreply.github.com will be used for web-based Git operations, e.g., edits and merges.
ここで、xxxx@xxxx.xx.xxは大学のメールアドレスで、各種認証やGitHubからの連絡に用いられます。一方、????????+kouka-taro@users.noreply.github.comは、Gitのemailアドレスに設定するためのものです。
なお、授業では非公開設定を推奨しますが、公開する必要がある場合は自己責任で行ってください。
GitHub classroomの課題を行うに当たっては、まず課題の招待を受け入れ、自分専用の課題リポジトリをGitHub上に作成する必要があります。Moodleに記載されている「課題0の招待リンク」をクリックしましょう。
以下のような画面になり、GitHub ClassroomがあなたのGitHubアカウントにアクセスする許可を求めてきますので、Authorize Classroomをクリックして許可します。

“Join the classroom”という画面に切り替わりますので、”Identifiers”の一覧から自分の名前を選択します。(万が一自分の名前がない場合はご連絡ください。Moodleにユーザー登録されていない可能性があります。)ここで間違った名前を選択すると、教員による取り消し操作が必要になりますのでご注意ください。

画面が切り替わりますので、”Accept this assignment”をクリックして課題を受け入れます。

これであなた専用の課題のリモートリポジトリが作成されました。リモートリポジトリの名前は、アカウント名がkouka-taroならば、
assignment-pr21-0-kouka-taro
のようになっているはずです。 KUT Econ Programming Courseにアクセスして、自分の課題リポジトリが出来ているか確認してください。
次は、GitHubのアカウント上に作成したリモートのリポジトリをパソコン(ローカル)にダウンロードしましょう。これ以降は、Gitというアプリケーションを使っていくことになります。
以前作成したGitHubディレクトリを右クリックし、”Git bash here”を選びます。すると、真っ暗なコンソールが開きます。bashというのは元々Linuxのコンソールで用いられているコマンド入力システム(コマンドラインシェルと呼ばれます)であり、Git bashはgitをWindows上で使いやすくするためにWindowsに移植されたWindows版bashです。Gitには色んな操作方法がありますが、Git bashのようなコンソールからコマンドを打ち込んで操作するのが最も基本的な操作方法ですので、ここではそれに従います。(使える機能は限定されていますが、VS Code上でGitの操作を行うこともできます)
Gitは使用前に以下の項目に関する初期設定が必要です。
ユーザー名を設定するには、次のようにコンソールに打ち込みます。注意: Taro Koukaのところは、自分の本名をアルファベット半角で入力してください!また、#記号に続く行は単なる説明なので、入力する必要はありません!
# ユーザー名設定
git config --global user.name "Taro Kouka"
Emailアドレスを設定するには、次のようにコンソールに打ち込みます。注意: ????????+kouka-taro@users.noreply.github.comのところには、githubが作成したダミーのemailアドレスを入力してください!
# Email設定
git config --global user.email ????????+kouka-taro@users.noreply.github.com
Gitでは、「コミット」という操作を行う際にエディタを起動する必要があります。その際に用いるエディタをcodeにしておきましょう。ただし、Gitをインストールする際にVSCodeをエディターに設定した人は、この操作は必要ありませんのでスキップしてください。
# エディタの設定
git config --global core.editor "code --wait"
”–wait”オプションをつけないとうまく動作しないので気を付けてください。
なお、VS Codeのパスを通していない人は、この設定も必要です。パスが通っているかどうか調べるには、git bash上で、次のように入力してみてください。バージョン番号が出力されれば、パスが通っています。
# パスの確認
code --version
バージョン番号が出力されずエラーが出る人はパスが通っていませんので、以下のようにしてパスを設定してください。VS Codeのショートカットを右クリックして、プロパティを選択し、「リンク先」に書いてあるパスをユーザー環境変数のPATHに追加します(システム環境変数ではありません)。実行ファイル名”Code.exe”はパスに含めないでください。これによってGitからも起動できるようになります。
設定がうまく行ったか次のコマンドを入力して調べておきましょう。
# 設定項目をリストアップ
git config --global --list
出力が次のようになっていれば設定完了です。
user.name=Taro Kouka
user.email=????????-kouka-taro@users.noreply.github.com
core.editor=code --wait
githubはhttpsとsshという2つの方法で接続できますが、ここではssh接続を解説することにします。まず、git bashのコンソールで、次のように入力してください。注意: kouka.taro@*****.ac.jpは、Githubに登録したあなたの真のEmailアドレスに設定します。オプション-Cは大文字なので注意。
ssh-keygen -t rsa -b 4096 -C "kouka.taro@*****.ac.jp"
秘密鍵ファイルの名前やパスフレーズなどを尋ねられますが、今回初めてSSHを使う人は全て空欄のままEnterキーを押して大丈夫です。(SSHを普段から使っていて詳しい人は、適切に設定してください。)合計3回Enterキーを押せば鍵が作られます。
これによりホームパスの下の.sshというフォルダの中に秘密鍵と公開鍵が作られます。ホームパスがわからない人は、gitで
echo $HOMEPATH
もしくはコマンドプロンプトで
echo %HOMEPATH%
と入力すれば出てきます。
.sshフォルダの中にあるファイルは次の4つになります。
| ファイル名 | 機能 |
|---|---|
| id_rsa | 秘密鍵 |
| id_rsa.pub | 公開鍵 |
| config | 設定ファイル |
| known_hosts | アクセスを許可する接続先のリスト |
このうち、id_rsaとid_rsa.pubがすでに存在していれば無事に秘密鍵と公開鍵が作成できています。他のファイルはまだ無いかもしれません。
鍵をつくったら、秘密鍵をパソコンに登録する必要があります。bashで次のように入力して、ssh-agentを起動してください。
eval "$(ssh-agent)"
Pid ...というようにプロセスIDが出力されればOKです。
次に、秘密鍵の登録は次のように入力してください。
ssh-add ~/.ssh/id_rsa
これで秘密鍵がローカルのパソコンに登録されました。秘密鍵を登録するときは、必ず毎回ssh-agentを起動しないと駄目なので注意してください。
次は、Githubに公開鍵を登録する必要があります。こちらにアクセスして、New SSH keyをクリックしてください。
Titleは分かりやすい名前なら何でも構いませんが、たとえばclass,university,campusなどといったものにしておけば、どこで作った鍵だったか分かりやすくて良いかと思います。
Keyの欄に、id_rsa.pub(公開鍵)ファイルの中身をまるごとコピー&ペーストしてください。
ファイルの中身をコピーするには、メモ帳やVS Codeで開いて全て選択してコピーする方法と、コマンドラインからクリップボードに貼り付ける方法があります。
Windowsの場合、コマンドラインでやるときは、bashのコンソールで
clip < ~/.ssh/id_rsa.pub
と入力すればクリップボードに貼り付けられます。一文字でも欠けると接続できませんので、コピー&ペーストは慎重にしてください。
TitleとKeyが入力できたら、Add SSH Keyをクリックして登録完了です。
bashにて、
ssh -T git@github.com
と入力してください。
The authenticity of host 'github.com (52.69.186.44)' can't be established.
RSA key fingerprint is ...
Are you sure you want to continue connecting (yes/no)?
と出たら、yesと入力します。これでGitHubがknownhostsファイルに登録されます。そのあと、
Hi kouka-taro! You've successfully authenticated, but ...
と出たらssh接続成功です。
基本設定が完了したら、先ほど作成したリモート課題リポジトリをローカルにコピーしましょう。先程の手順で、Githubディレクトリでgit bashを開いてください。課題リポジトリをリモートからローカルにコピーするにはbashコンソールに次のように入力します。
git clone git@github.com:kut-econ/assignment-pr21-0-kouka-taro.git
kouka-taroのところはご自身のGitHubアカウント名にしてください。これによってリモートのリポジトリが、ローカルのGitHubディレクトリ下にコピーされますので、エクスプローラで確認してみましょう。GitHubディレクトリの下に、assignment-…という名前のディレクトリが作成されていれば成功です。
このように、リモートリポジトリをローカルにコピーする操作をクローンと呼びますので覚えておきましょう。クローンするコマンドの一般形は次のようになります。
git clone repository_url
repository_urlはリモートリポジトリのurlです。このurlは、自分のリモート課題リポジトリにインターネットブラウザでアクセスすることにより調べることができます。KUT Econ Programming Courseのサイトで自分のリモート課題リポジトリのリンクを見つけ、クリックしてください。以下のようにリポジトリの内容が表示されます。

右上の緑色の”Code”というボタンから、クローンのためのリポジトリのurlをコピーできます。(sshリンクを選んでください。https接続している人は、httpsリンクで構いません。)
ローカルにリポジトリをクローンできたら、編集してみましょう。一度git bashを閉じてください(exitと入力します)。Windowsエクスプローラでローカルにコピーした課題リポジトリのフォルダを開いてください。以下三つのファイルがあるはずです。
エクスプローラ上で右クリックして「Codeで開く」を選択し、VS Codeを起動しましょう。上記3つのファイルをVS Codeで開いて内容を確認してみましょう。
さて、これから、これらのファイルに編集を加えて、リモートリポジトリに変更をアップロードするという作業を行いますが、Gitの挙動を理解するために、慎重におこなってください。
ここでリポジトリの構造を説明しておきます。クローンによって作成されたディレクトリは作業ディレクトリと呼ばれ、リポジトリの本体はその中にあります。実際には、リポジトリの本体は.gitという隠しフォルダとして存在しています。リポジトリは、作業ディレクトリ内のファイルの過去の状態を記録しており、現在の状態と過去の状態を比較したり、作業ディレクトリの内容を過去の状態に戻したりする機能を提供します。この意味で、作業ディレクトリは、リポジトリの管理下にあると表現されることがあります。
リポジトリの管理下にある作業ディレクトリの内部は、次の三つの領域から構成されています。

Windowsエクスプローラによって閲覧できる作業ディレクトリ内のファイルは、(隠しフォルダ.gitを除き)すべて作業エリア内に存在します。ステージングエリアとコミット履歴は、gitコマンドによってのみ内容を確かめることができます。
上記のうち、コミット履歴がリポジトリの中核部分であり、過去に記録したファイルの状態を全て収めています。
一方ステージングエリアは作業エリアとコミット履歴を結ぶ中間的な領域であり、しばしばインデックスと(いう若干分かりにくい名前で)呼ばれることもあるので注意してください。ステージングエリアは、ファイルの変更をコミット履歴に記録するまえに、一時的に待機させる役割を持ちます。
それでは、作業エリア内のファイルを修正して、ステージングエリアに入れてみましょう。現在皆さんは、ローカル課題リポジトリの作業ディレクトリの中でVS Codeを起動ている状態にあるかと思います。assignment-0-code.pyを開いて、若干の修正を加えます。

これは変数xに1を代入してその値を画面に出力するだけのコードです。x=1の下にy=2という行を挿入してみましょう。

すると、画面左のサイドバーにある三つ目のボタンが変化して、1というマークがつきます。これは、変更箇所が1箇所存在するということを表します。

このボタンをクリックしましょう。すると、エクスプローラに変更のあったファイルの一覧が表示されますので、assignment-0-code.pyを選択します。すると、ウィンドウが二つに分かれて、変更前と変更後を比較する画面になります。このように、リポジトリの管理下にある作業ディレクトリで追跡管理されているファイルを変更すると、どこに変化があったのかいつもチェックすることができます。

それでは、この変更をステージングエリアに登録しましょう。bashコンソールで次のように入力してみてください。
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: assignment-0-code.py
no changes added to commit (use "git add" and/or "git commit -a")
“Changes not staged for commit”と表示されていますが、これは、「まだステージングされていない変更」という意味です。modified:の行には、変更があったファイル名(assignment-0-code.py)が表示されます。
ステージングするファイルは個別に選択することもできますが、ここでは変更の有ったファイルを全てステージングすることにしましょう。そのためには、次のように入力します。
git add -A
これでステージング完了です。ためしにgit statusしてみましょう。
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: assignment-0-code.py
上記のように表示が”Changes to be comitted”に変わっています。これは、「ステージングされたけど、まだコミットされていない変更」という意味です。
この時点で、assignment-0-code.pyの変更は、作業ディレクトリからステージングエリアに入れられました。この状態では、まだ変更はリポジトリに記録されていません。記録する変更の候補としてノミネートされただけです。ステージングエリアに入れられた変更をリポジトリに記録するには、コミットという作業によって変更をコミット履歴に登録する必要があります。
ステージングエリアに入ったがまだコミットされていない変更は次のようにリセット(アンステージ)することができます。
$ git reset
Unstaged changes after reset:
M assignment-0-code.py
ためしにgit statusして、状態がもとに戻っていることを確認してください。確認をおえたら、もう一度git add -Aによりステージングしておきましょう。
なお、新しく作成したファイルは、作業エリア内にのみ存在しますが、一度もステージングしていないと、リポジトリはこのファイルに関する記録を何も持たないことになります(それが存在するということを除いて)。従って、新規ファイルはステージングして初めて内容の変更を追跡管理されることを覚えておいてください。
ステージングエリアに入れた変更をリポジトリに記録するには、コミットする必要があります。コミットには、常に1行以上のメッセージを付ける必要があります。1行だけのメッセージをつけるときは、次のようにします。
$ git commit -m "My first commit"
[master c70dbc9] My first commit
1 file changed, 1 insertion(+)
ここで”My first commit”がメッセージです。メッセージは、後からコミット履歴を調べたときに、個々のコミットが何のためのコミットであったか分かりやすくするためのものです。
では状態がどのように変化したか、git statusで調べてみましょう。
$ git status
On branch master
nothing to commit, working tree clean
“nothing to commit”、つまり、コミットすべきものはもう何もない、と表示されています。これにより、ステージングエリア、コミット履歴が全て最新の状態、すなわち作業スペースと同じ状態になったことが分かります。
コミットを取り消してコミット前(ステージングした状態)に戻すには、次のようにします。
$ git reset --soft HEAD^
Unstaged changes after reset:
M assignment-0-code.py
ここで”–soft”は、「コミット履歴だけ戻すけど、ステージングエリアまでは元にもどさない」という意味です。HEAD^は大雑把に言うと「現在地点より一つ前」という意味です。ステージングエリアも元に戻したい場合はさらにgit resetすれば良いでしょう。
それではせっかくもとに戻したので、別の方法でコミットしてみます。メッセージなしでgit commitしてみてください。
git commit
すると、(Gitの初期設定とVS Codeのパス設定を正しくしていれば)VS Codeが起動して、コミットメッセージの入力を求められます。この状態では、複数行のメッセージをつけることができます。

その際、最初の1行にはシンプルなメッセージを書き、1行あけてより詳しいメッセージを書くようにしてください。

メッセージを書き終わったら、保存してVS Codeを終了すると、bashに戻ります。git statusしてコミット履歴とステージングエリアがともに最新になっているか確かめておいてください。
なお、「面倒くさいのでステージングとコミットをまとめてやってしまいたい」という場合は、次のようにします。
git commit -a
同様に、1行メッセージで済ませるときは、
git commit -a -m "My message"
です。
リポジトリの変更をコミットしたら、次はこれをリモートリポジトリにアップロードして課題提出完了となります。この作業をプッシュといいます。言い変えると、リモートの状態をローカルに同期させる作業ということになります。
プッシュする前に、次のコマンドを実行しておくと便利です。
$ git branch --set-upstream-to=origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.
このコマンドを正確に説明するのは難しいですが、ごく大雑把にいうとoriginはリモートリポジトリを、masterはリモートの最新のコミットを表します。上記のコマンドは、(大雑把に言うと)「このリポジトリは、リモートリポジトリoriginのmasterと繋げてくださいね」といった意味合いになります。ちょっと不正確ですが、正しく説明しようとするとブランチの概念が必要になってきます(本講義ではブランチを詳しく説明することはしません)。
origin/masterを上流ブランチといいます。上流ブランチが正しく設定されているかを確認するには、次のようにします。
$ git status -sb
## master...origin/master
上記のように## master...origin/masterと出ていれば成功です。
プッシュは次のコマンドでおこないます。
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 379 bytes | 379.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/kut-econ/assignment-pr21-0-kouka-taro.git
cb907d6..16ae7e9 master -> master
なお”–set-upstream-to”の設定を行わなかった場合は、代わりに
git push origin master
もしくは
git push -u origin master
と入力する必要があります。前者は上流ブランチの設定をしませんが、後者はpushと同時に上流ブランチをorigin/masterに設定します。
プッシュの際にパスワードを尋ねられた場合は、GitHubのパスワードを入力してください。
上記で、originはリモートリポジトリを表します。masterはリモートリポジトリの最新のコミットを表します。”git push origin master”は、リモートリポジトリ(origin)に保存されている最新のコミット(master)に、ローカルリポジトリの最新版をプッシュして上乗せ更新せよ、という意味になります。
プッシュが完了すれば、課題提出成功となります。ちゃんとプッシュできたか確認するには、GitHubのサイトで確認するのが最も確実です。全ての課題リポジトリが保存されているKUT Econ Programming Courseのサイトにアクセスして、目当ての課題リポジトリ名を見つけましょう。課題リポジトリ名をクリックすると、リモートの中身を閲覧できますので、ちゃんとプッシュが成功しているか確かめておいてください。
2台以上のパソコン(たとえば家と大学など)で同じ課題を行う場合、両方のパソコンで同じリモートリポジトリをクローンし、2台の作業を同期させたい場合があります。そのためには、プッシュするだけではなく、ローカルの状態をリモートの状態に同期させる逆の作業が必要になります。これをプルといいます。

2台目に初めてローカルリポジトリを作る時は、単にクローンすれば良いだけです。そのあとは、リモートに変更があるたびに、プルして同期します。プルは非常に簡単で、次のように入力するだけです。
git fetch
git pull
これだけです。fetchはリモートの状態を確かめるコマンドです。git fetchのあとにgit statusすれば、ローカルが何コミット分遅れているかが表示されますので、確かにローカルの方がリモートより遅れていることを確認しましょう。
確かにリモートのほうが新しければ、git pullによってローカルをリモートに同期させることができます。
次は、Gitのさらに発展的な操作について学んでいきましょう。次のパブリックリポジトリをGitHubディレクトリの下にクローンしてください。
ここから先は、VS CodeでリポジトリのREADMEを読んでください。
最後に主要なGitコマンドをリストアップしておきましょう。
| コマンド | 用途 |
|---|---|
git clone |
リモートリポジトリをローカルにコピー |
git status |
リポジトリの状態をチェック |
git add -A |
作業エリアの変更をすべてステージ |
git add filename |
ファイルfilenameの変更をステージ |
git commit -m "Message" |
メッセージ”Message”をつけてコミット |
git commit |
コミット(メッセージはエディタで入力) |
git branch --set-upstream-to=origin/master |
ローカルと同期させるリモートを設定 |
git push |
リモートをローカルに同期 |
git pull |
ローカルをリモートに同期 |
git reset |
ステージングエリアをコミットせずに破棄 |
git reset --hard HEAD |
作業エリアとステージングエリアをコミットせずに共に破棄 |
git reset --soft HEAD^ |
コミット履歴だけ一つ前に戻す |
git reset --mixed HEAD^ |
コミット履歴を一つ前に戻してステージングエリアもそれに合わせる |
git reset --hard HEAD^ |
コミット履歴を一つ前に戻して作業エリアとステージングエリアもそれに合わせる |
git log |
コミット履歴を閲覧する |
Gitには便利なコマンドが無数に存在しますので、インターネット等で調べ、少しずつGitの構造を理解していきましょう。
本講義では、以下のことを学びました。
今回の講義では、課題を提出するために必要最低限のGitコマンドだけ学びました。本格的な開発にGitを使うためには、参考書を手に入れてより深く学ぶことをお勧めします(『独習Git』がお勧めです)。
大学の有線LANに繋がっているパソコンの場合は、sshのポートを正しく設定する必要があります。ただし、コンピュータールームのパソコンは、講義の中で自動プログラムにより設定を行ないますので、本項目の作業は不必要です。
.sshフォルダの中に、configという名前のテキストファイルを作って、中に次のように記述して保存してください(コピペして整形し、プロキシの情報を正しく編集してください)。
Host github.com
User git
HostName ssh.github.com
Port 443
IdentityFile ~/.ssh/id_rsa
ProxyCommand connect -H http://proxy.addr:0000 %h %p
ここで、http://proxy.addr:0000は適切なプロキシサーバーのアドレスとポート番号です。