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アカウントをお持ちの方は、新たに作成する必要はありません。
インターネットブラウザでGitHubのサイトに行き、画面右上の”Sign up”をクリックします。
“Create your account”という画面になりますので、以下の項目を入力します。
ユーザーネームを作成するときは、以下の点にご注意ください。
パスワードを決めるときは、以下の点にご注意ください。

ユーザー名等の入力を終えたら、”Verify your account”の項目でロボットでないことを証明し、”Creat account”をクリックします。
“Welcome to GitHub”というページになりますので、以下のように入力してください。
What kind of work do you do, mainly?はStudentを選択してください。

How much programming experience do you have?はA littleなどご自身のプログラミング経験のレベルにあったものを選択してください。

What do you plant to use GitHub for?については、Learn to code、Learn Git and GitHub、School work and student projectsなどを選択しておけば良いでしょう。(3つまで選択可)

I am interested inのところは、pythonと入力し、”Complete setup”をクリックします。

“Please verify your email address”という画面になったら無事アカウント作成に成功です。

アカウント作成の後、認証作業が必要になります。登録した大学のEmailにGitHubから”Please verify your email address”という件名のメールが来ているはずですので、内容を確認してください。”Verify email address”というボタンがあるはずなので、これをクリックします。
インターネットブラウザが起動し、”What do you want to do first?”というページになりますので、一番下の”Skip this for now”をクリックしてください。これでアカウント作成・認証とも完了です。いつでもGitHubが使える状態になりました。

今後GitHubにログインするときは、GitHubのページの右上の”Sign in”をクリックしてユーザー名とパスワードを入力してください。
アカウントを作成したら、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は使用前に以下の項目に関する初期設定が必要です。
ユーザー名、Emailアドレス、プロキシを設定するには次のようにコンソールに打ち込みます。
# ユーザー名設定
git config --global user.name "Taro Kouka"
ここで、Taro Koukaは自分の本名です。
# Email設定
git config --global user.email ????????+kouka-taro@users.noreply.github.com
ここで、????????+kouka-taro@users.noreply.github.comは、githubが作成したダミーのemailアドレスです。ここに大学のemailアドレスを入力しても構いませんが、公開されるものですので、自己責任で行ってください。(いつでも好きなときに変更できます。)
# proxy設定
git config --global http.proxy http://proxy.addr:0000
git config --global https.proxy http://proxy.addr:0000
proxy.addrは適切なプロキシサーバー名、0000は適切なポート番号に設定してください。
Gitでは、「コミット」という操作を行う際にエディタを起動する必要があります。その際に用いるエディタをcodeにしておきましょう。デフォルトではviですので、viのままで良い人は設定の必要はありません。
# エディタの設定
git config --global core.editor "code --wait"
”–wait”オプションをつけないとうまく動作しないので気を付けてください。
なお、VS Codeのパスを通していない人は、この設定も必要です。これについては、前回資料末尾の覚書を参考にしてください。
設定がうまく行ったか次のコマンドで調べておきましょう。
# 設定項目をリストアップ
$ git config --global --list
user.name=Taro Kouka
user.email=????????-kouka-taro@users.noreply.github.com
core.editor=code --wait
proxy.http=http://proxy.addr:0000
proxy.https=http://proxy.addr:0000
上記のようになっていれば設定完了です。
githubはhttpsとsshという2つの方法で接続できますが、ここではssh接続を解説することにします。どちらの接続方法でも構いませんので、すでに接続できているならば、ここは読み飛ばしてください。(ただしhttpsで接続している方は、2021年の8月からは通常のパスワードの代わりにpersonal access tokenという文字列を入力しないと接続できなくなりますので、注意してください。)
まず、bashのコンソールで、次のように入力してください。
ssh-keygen -t rsa -b 4096 -C "kouka.taro@*****.ac.jp"
ここで、"kouka.taro@*****.ac.jp"は、Githubに登録した真のEmailアドレスに設定します。オプション-Cは大文字なので注意してください。秘密鍵ファイルの名前やパスフレーズなどを尋ねられますが、今回初めて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をクリックして登録完了です。
大学の有線LANに繋がっているパソコンの場合は、sshのポートを正しく設定する必要があります(無線LANにWiFiで接続している人は以下の設定は要りません)。
.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は適切なプロキシサーバーのアドレスとポート番号です。
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 --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』がお勧めです)。
git logコマンドについて研究しなさい。これは過去のコミット履歴を表示するものです。git checkoutコマンドについて調べなさい。HEADとmasterが分離する(detach)とはどのような状態を表すか?