Githubの基本的な使い方
GitHubとは
GitHubはバージョン管理システムGitのホスティングサービスです.GitHubでソースコードを管理・共有することで,他の開発者と一緒にコーディングをすることが可能になります.オープンソースのプロジェクトなどはGitHubを利用して開発されることが殆どです.ここでは,GitHubの基本的な使い方を解説します.
GitHubを利用する準備
アカウントの作成
公式サイトでGitHubのアカウントを作成してください.一般の無料アカウントでは,誰もが閲覧可能な パブリック・レポジトリ しか作成できませんが,学生や教員はGitHub Educationに登録が可能で,無料で プライベート・レポジトリ を作成できます.下記の記事を参考にGitHub Educationに登録しておきましょう.
【学割】GitHub Educationの申請とPrivateリポジトリを無料で使う方法
GitHub Desktopのインストール
GitHubの操作にはクライアント・ソフトウェアを利用します.どのソフトウェアを利用しても構いませんが,GitHub公式のGitHub Desktopがオススメです.向はCUIのGit for Windowsを利用しています.
GitHub Dektopをインストールしたら,GitHubのアカウントでサインインします.
パブリック・レポジトリの作成
GitHubのウェブサイトにアクセスし,ウェブ上にパブリック・レポジトリを作成します.
レポジトリの名前は TestRepository とします. レポジトリで管理するファイルなどの説明を記述するための README ファイルの作成もチェックしておきます.
レポジトリの基本操作
レポジトリをローカルPCにクローン
GitHub Desktopで,ウェブ上に作成したレポジトリをローカルPCに Clone(クローン) します. クローンとはファイルをコピーして複製するという意味です. レポジトリのクローンを保存するためのフォルダをローカルPCに作成してください. フォルダ名はレポジトリと同じ TestRepository としておきましょう.
READMEを上書き
レポジトリをクローンしたフォルダに README.md が存在しています. このファイルは作成したレポジトリの説明書であり,ウェブサイトのトップ画面に自動的に表示されます. 開発するソフトウェアの名称や使い方などを記述する目的で用いられます. メモ帳などのエディタでファイルを開き,下記のように作成者を追加して保存してください(公開されてしまうので ニックネーム でOK). 拡張子は md となっており,手軽にウェブページを記述できるMarkdown(マークダウン)記法で記述することを表しています. マークダウン記法はとても便利なので使いこなせるようにしておきましょう.
# TestRepository
テスト用のレポジトリです.
## 作成者
向 直人
README.mdを編集すると,GitHub Desktopでは,ファイルの上書きを認識し,過去のファイルとの差分を表示してくれます. このファイルの変更を Commit(コミット) します. コミットとは,レポジトリの現在の状態を記録することを意味し,いつでも過去のコミットした状態に戻すことが可能です. コミットする際は,コミット内容を表すタイトル「READMEの修正」とコメント「READMEに作成者を追加したよ」を入力しておきます.
コミット内容をサーバ(GitHub)と同期するには Push(プッシュ) します. プッシュとは,ローカルPCからサーバにファイルを転送することを意味します.
プッシュした後で,GitHubのウェブサイトを確認してみましょう. README.mdが更新され,作成者が表示されているはずです.
ファイルの新規作成
レポジトリをクローンしたフォルダに, sample.txt を作成しましょう.sample.txtには下記の文字列を入力しておきます.
Apple
Banana
Grapes
GitHub Desktopでは,ファイルの新規作成を認識し,差分を表示してくれます. ここまでをコミットしてから,サーバにプッシュします.
新たにsample.txtにLemonを追加します.
Apple
Banana
Grapes
Lemon
再度,コミットしてから,サーバにプッシュします. このとき「+Lemon」と表示され,差分が認識されていることが確認できます.
ヒストリーの活用
ここで, History(ヒストリー) を確認してみましょう.ヒストリーは,レポジトリの変更履歴です.これまでにコミットした内容が表示されます.
ヒストリーから,過去のコミットを Revert(リバート) することができます.リバートとは,過去のコミットを取り消して,以前の状態に戻すことを意味します. ここでは「Lemonを追加」をリバートしてみます. 「Lemonを追加」のコミットを選択して,右クリックし Revert this commit を選択します. すると一つ前の「Sample.txtの追加」の状態に戻ります.
リバートしたコミットを,さらにリバートすることができます(リバートも一つのコミットとして記録されている). 「Revert “Lemonを追加”」をリバートすると,Lemonが追加された状態に戻ります. 最後に,ここまでのコミットをサーバにプッシュしておきましょう.
ブランチの活用
ブランチの作成
ヒストリーは上述のようにリバートすることで,コミットの取り消しができますが,ヒストリーを分岐して記録することができません.そこで,Branch(ブランチ) を用います.デフォルトで作成されるブランチは main ブランチですが,これを分岐して新しいブランチを作成しましょう.メニューから New Branch を選択して,新規に sub ブランチを作成します.
現在のブランチが main から sub に変更されていることが確認できます.現在,どのブランチで作業しているか常にチェックするようにしましょう.
sub ブランチでファイル編集
作成した sub ブランチで sample.txt を下記のように編集しましょう.
Apple
Banana
Grapes
Lemon
Strawberry
ここまでを,コミットしてから,サーバにプッシュします.あくまで sub ブランチで作業していることに注意してください.
ここで,ブランチを sub から main に変更してみましょう.上記の「Strawberryを追加」のコミットが適用されていないことがわかります.
ブランチをマージ
それでは,subブランチ のコミットを,mainブランチ に Merge(マージ) してみましょう.マージとは,2つのブランチの内容を統合することを意味します.マージするには, Pull(プル) リクエストを生成します.
ファイルの変更の Conflict(コンフリクト) がないことが確認されれば,マージすることが可能です.コンフリクトとは,ブランチのファイルの内容が衝突して,整合性がとれない状態を意味します.
これでウェブサイトのsubブランチはmainブランチにマージされました.しかし,ローカルPCのレポジトリに変更は反映されていません.そこで,mainブランチの状態で fetch(フェッチ) します.フェッチとは,サーバの最新のレポジトリとローカルPCのレポジトリを同期することを意味します.これでレポジトリは最新の状態に更新され,Sample.txtにStrawberryの記述があることが確認できます.
コンフリクトの解消
それでは意図的にコンフリクトを発生させてみましょう. まずは,subブランチでsample.txtに「Kiwi」を追加し,次のように修正します.
Apple
Banana
Grapes
Lemon
Strawberry
Kiwi
ここまでを,コミットしてから,サーバにプッシュします.Pullリクエストを生成して,mainブランチにマージしておきます.これで,サーバのレポジトリは更新されましたが,ローカルPCのレポジトリは元の状態(「Kiwi」が追加されていない状態)であることに注意してください.
ここで,mainブランチに「Melon」を追加し,sample.txtを修正します.
Apple
Banana
Grapes
Lemon
Strawberry
Melon
ここまでを,コミットしてから,サーバにプッシュします.
ここで,コンフリクトが発生します. サーバのsample.txtには Kiwi ,ローカルPCのsample.txtには Melon が記述されているからです.
コンフリクトが発生すると,Sample.txtには下記のように,コンフリクトが発生した箇所が表示されます. ここでは,ローカルPCで作業した Melon を採用することにします.
Apple
Banana
Grapes
Lemon
Strawberry
<<<<<<< HEAD
Melon
=======
Kiwi
>>>>>>> da8696e008c86c8aefaf48c978b86cc7a6f2a8ac
Kiwi の箇所を削除して,Melon を残します.これで,コンフリクトは解消されました.
Apple
Banana
Grapes
Lemon
Strawberry
Melon
最後にマージして,サーバにプッシュしましょう.
レポジトリの共有
プロジェクトをメンバーで共有するには,レポジトリに Collaborator(コラボレータ) として招待します.招待するには,ウェブサイトで [Setting]-[Manage Access]-[Invite a collaborator]から,GitHubのアカウントを入力します.レポジトリを作成したら向のアカウントnaoto-githubを招待してください.