Githubの基本的な使い方
GitHubとは
GitHubはバージョン管理システムGitのホスティングサービスです.GitHubでソースコードを管理・共有することで,他の開発者と一緒にコーディングをすることが可能になります.オープンソースのプロジェクトなどはGitHubを利用して開発されることが殆どです.ここでは,GitHubの基本的な使い方を解説します.
GitHubを利用する準備
アカウントの作成
公式サイトでGitHubのアカウントを作成してください.一般の無料アカウントでは,誰もが閲覧可能な パブリック・レポジトリ しか作成できませんが,学生や教員はGitHub Educationに登録が可能で,無料で プライベート・レポジトリ を作成できます.下記の記事を参考に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 が存在しています.このファイルはレポジトリの説明書であり,ウェブサイトののトップ画面に表示されます.メモ帳などのエディタでファイルを開き,下記のように作成者を追加して保存してください.拡張子の md は,手軽にウェブページを記述できるMarkdown(マークダウン)記法を表しています.
# TestRepository
テスト用のレポジトリです.
## 作成者
向 直人
するとGitHub Desktopでは,ファイルの上書きを認識し,差分を表示してくれます.それでは,このファイルの変更を Commit(コミット) します.コミットとは,レポジトリの現在の状態を記録することを意味します.コミットしておけば,いつでもコミットした状態に戻すことが可能です.コミットする際は,コミット内容を表すタイトルとコメントを入力しておきます.
コミット内容をサーバ(GitHub)と同期するには Push(プッシュ) します.プッシュとは,ローカルPCからサーバにファイルを転送することを意味します.
プッシュした後で,GitHubのウェブサイトを確認してみましょう.README.mdが更新され,作成者が表示されているはずです.
ファイルの新規作成
レポジトリをクローンしたフォルダに, sample.txt を作成しましょう.sample.txtには下記の文字列を入力しておきます.
Apple
Banana
Grapes
GitHub Desktopでは,ファイルの新規作成を認識し,差分を表示してくれます.ここまでを,コミットしてから,サーバにプッシュします.
新たにsample.txtにLemonを追加します.
Apple
Banana
Grapes
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を修正します.
Apple
Banana
Grapes
Lemon
Strawberry
Kiwi
ここまでを,コミットしてから,サーバにプッシュします.Pullリクエストを生成して,mainブランチにマージしておきます.これで,サーバのレポジトリは更新されましたが,ローカルPCのレポジトリは元の状態であることに注意してください.
ここで,mainブランチで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を招待してください.