@@ -6,6 +6,170 @@ import CodeBlock from '@theme/CodeBlock';
66import Term from "@site/src /components/Term";
77import OpenInCodeSandbox from "@site/src /components/OpenInCodeSandbox";
88
9- ## Git によるバージョン管理
9+ ::: caution
10+ 以下の文章は macOS か wsl を用いて開発している前提で記述されています。
11+ :::
1012
11- ## GitHub を用いた共同開発
13+ ## GitHub への登録
14+
15+ 1 . [ Github] ( https://github.co.jp ) を開き、右上のサインアップをクリック。
16+ ![ Github home] ( ./pictures/github-home.png )
17+
18+ 2 . 情報を入力する。
19+ ![ create New Account] ( ./pictures/github-signup.png )
20+ ::: caution
21+ Username は、登録後変更できるとはいえ手順が面倒なため、変更しないものとしてよく考えてつけましょう。
22+ :::
23+
24+ 3 . 公開鍵と秘密鍵の作成
25+
26+ Terminal にて以下のコマンドを実行
27+
28+ ```
29+ $ cd ~
30+ $ ssh-keygen -t ed25519
31+ ```
32+ 途中でターミナルの表示画面が止まりますが、user@host:~ $が再度表示されるまで enter で進みます。
33+
34+ 公開鍵が格納されたファイルの中身を表示させるため、以下のコマンドを入力します。
35+
36+ ```
37+ $ cd ~/.ssh
38+ $ cat id_ed25519.pub
39+ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFNwa2O/BIlw+WvisPCrSlM6IS2M2bbCRKNU9G8NYq2L [ユーザー名]@[コンピューター名]
40+ ```
41+ ` ssh-ed25519 AA... ` 2Lの部分をコピーしましょう。これが公開鍵です。
42+
43+ 4 . Github への公開鍵の登録
44+
45+ 登録ページへの移動方法は、` Setting ` > ` SSH and GPG keys ` > ` New SSH key ` と順に移動すればたどり着ける。
46+ ![ add-ssh-key] ( ./pictures/ssh-key-add.png )
47+
48+ 上記のようなページが表示されたら、Title に適切な名前(自分のどの端末かわかるような情報)、Key には先ほどTerminalで表示した公開鍵を入力して登録しましょう。
49+
50+ ## Gitによるバージョン管理
51+ ### ローカルのリポジトリをGitで管理
52+ Gitのリポジトリは、コミットと呼ばれるソースコードへの変更の塊の集合です。適当なプロジェクトを、Gitの管理下に置いてみましょう。
53+
54+ 以下のコマンドをTerminalに入力してください(usernameやprojectnameは自分の環境に合わせたものを使用してください)
55+ ```
56+ $ cd /Users/username/projects/projectname
57+ $ git init
58+ Initialized empty Git repository in /Users/username/projects/projectname/.git/
59+ ```
60+
61+ :::info VSCode上でのTerminalの開き方
62+ 下の画像のようにタブバーから開くことができる
63+ ![ open terminal] ( pictures/new-integrated-terminal.png )
64+ :::
65+
66+ ファイルリスト中のファイルの色が変わり、` U ` の文字が表示されたでしょうか。
67+
68+ ![ git init] ( pictures/git-init.png )
69+
70+ ` git init ` は、ディレクトリをGitの支配下に置くことを宣言するためのコマンドです。このコマンドを実行することにより、プロジェクトディレクトリはまだコミットが存在しない空のリポジトリになりました。
71+
72+ ` U ` は` Untracked ` の頭文字で、そのファイルが最後のコミット(といってもまだ作ったばかりのリポジトリなので空ですが)より後に新しく作成され、まだGitによって管理されていないことを表します。
73+
74+ ```
75+ $ git add -A
76+ ```
77+
78+ 左側のパネルを` SOURCE CONTROL ` にすると、すべてのファイルリストではなく、変更されたファイルのみのリストを表示させることができます。上のコマンドを実行すると、今まで` U ` だった部分が` A (Added) ` に変更されました。
79+
80+ ![ ステージング] ( pictures/git-staging.png )
81+
82+ ` git add ` コマンドは、変更を** ステージング** するためのコマンドです。ステージングとはコミットの直前の状態で、Gitに対して該当ファイルをコミットする意思があることを伝えるためのものです。今回は` -A ` オプションによりすべてのファイルをステージングしましたが、特定のファイルのみとすることもできます。
83+
84+ VSCodeは、GUIを利用したGitの操作に標準で対応しています。変更一覧に表示されるプラスボタンがステージング、マイナスボタンがその解除に当たります。
85+
86+ 最後に、ステージングされたファイルをコミットしてみましょう。
87+
88+ ```
89+ $ git commit -m "init"
90+ ```
91+
92+ コミットが作成され、ファイルリストは白色に戻りました。なお、gitではコミットを作成するとき、そのコミットによって行った変更を説明するための** コミットメッセージ** を付けることになっています。それを指定するためのオプションが` -m ` です。
93+
94+ ![ コミット] ( pictures/git-commit.png )
95+
96+ なお、これ以降は、最後のコミットと比較し、新しく追加されたファイルには` U ` が、編集されたファイルには` M (Modified) ` が付与されます。ある程度変更がまとまったら、ステージング(` git add ` )、コミット(` git commit ` )を繰り返してプログラムを書き進めていきましょう。
97+
98+ ![ さらに編集] ( pictures/additional-changes.png )
99+
100+ :::tip ` .gitignore `
101+ ` .gitignore ` ファイルで指定されたファイルはコミットされない。` npm install ` で簡単にダウンロードできて容量が大きいのでバージョン管理するメリットのない ` node_modules ` や、機密情報や環境ごとに異なる情報を含む ` .env ` といったファイルが指定される。
102+ :::
103+
104+ ### GitHubとの同期
105+ ローカルで管理しているリポジトリをGitHub上のリポジトリに同期させてみましょう。
106+
107+
108+ ![ GitHub上でリポジトリを作成する] ( pictures/new-repository.png )
109+
110+ GitHubでは、Webインターフェースを使用してGitリポジトリの操作をすることができます。` Repository name ` に適当な名前を入力して、` Create repository ` を押しましょう。
111+
112+ ![ 新しいリポジトリ] ( pictures/repository-created.png )
113+
114+ ` [email protected] :アカウント名/リポジトリ名.git` の部分は、GitHub上に新しく作ったリポジトリの場所を表すURLです。
115+
116+ ターミナルに戻り、以下のコマンドを実行します。
117+
118+ ```
119+ $ git remote add origin [email protected] :アカウント名/リポジトリ名.git 120+ ```
121+
122+ このコマンドを実行することで、ローカルリポジトリに対し、URLで指定したリポジトリを` origin ` という名前で関連付けさせます。
123+
124+ ::: note
125+ ` origin ` という名前は慣習的に決まっているものです。別の名前で登録することもできますが、あまり一般的ではありません。
126+ :::
127+
128+ ` origin ` に対し、ローカルリポジトリの変更を** プッシュ** しましょう。
129+
130+ ```
131+ $ git push -u origin master
132+ ```
133+
134+ ::: info
135+ この操作の際、初回は以下のような警告が出る場合があります。
136+ ```
137+ The authenticity of host 'github.com (13.114.40.48)' can't be established.
138+ RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
139+ Are you sure you want to continue connecting (yes/no/[fingerprint])?
140+ ```
141+ これは、接続先となっているGitHubが、なりすましではなく本物のGitHubであると信頼してもよいかを尋ねるメッセージです。家庭用のインターネット回線、UTokyo WiFi等、十分に信頼できるネットワークに接続している場合は問題ありませんので、` yes ` を入力して続行させてください。
142+ :::
143+
144+ ::: tip
145+ ` -u ` オプションは、初回の` push ` 時にその宛先を記憶し、次回以降自動的にその場所を指定するためのオプションです。2回目以降は
146+
147+ ```
148+ $ git push
149+ ```
150+
151+ だけで構いません。` master ` は、** ブランチ** と呼ばれるソースコードの編集の分岐の名前を表すものですが、この回ではまだ詳しく扱わないこととします。
152+ :::
153+
154+ GitHubをリロードしてみてください。変更が反映されているのを確認できるはずです。
155+
156+ ![ GitHub上のリポジトリが更新された] ( pictures/github-updated.png )
157+
158+
159+ ## おすすめ拡張機能
160+
161+ - Git Lens
162+
163+ コミットの差分などが見やすくなり便利
164+ ![ gitlens] ( ./pictures/gitLens.png )
165+
166+ - Git Glaph
167+
168+ コマンドパレット(Cmd + Shift + P)に Git Graph: View Git Graph (git log)というメニューが出て見やすい
169+
170+ ![ gitGlaph] ( ./pictures/gitGlaph.png )
171+
172+
173+ ### 課題
174+
175+ Todo アプリのソースコードを Github に保存してみましょう。
0 commit comments