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のアカウントでサインインします.

Image from Gyazo

パブリック・レポジトリの作成

GitHubのウェブサイトにアクセスし,ウェブ上にパブリック・レポジトリを作成します.

Image from Gyazo

レポジトリの名前は TestRepository とします. レポジトリで管理するファイルなどの説明を記述するための README ファイルの作成もチェックしておきます.

Image from Gyazo

レポジトリの基本操作

レポジトリをローカルPCにクローン

GitHub Desktopで,ウェブ上に作成したレポジトリをローカルPCに Clone(クローン) します. クローンとはファイルをコピーして複製するという意味です. レポジトリのクローンを保存するためのフォルダをローカルPCに作成してください. フォルダ名はレポジトリと同じ TestRepository としておきましょう.

Image from Gyazo

Image from Gyazo

Image from Gyazo

READMEを上書き

レポジトリをクローンしたフォルダに README.md が存在しています. このファイルは作成したレポジトリの説明書であり,ウェブサイトのトップ画面に自動的に表示されます. 開発するソフトウェアの名称や使い方などを記述する目的で用いられます. メモ帳などのエディタでファイルを開き,下記のように作成者を追加して保存してください(公開されてしまうので ニックネーム でOK). 拡張子は md となっており,手軽にウェブページを記述できるMarkdown(マークダウン)記法で記述することを表しています. マークダウン記法はとても便利なので使いこなせるようにしておきましょう.

# TestRepository
テスト用のレポジトリです.

## 作成者
向 直人

README.mdを編集すると,GitHub Desktopでは,ファイルの上書きを認識し,過去のファイルとの差分を表示してくれます. このファイルの変更を Commit(コミット) します. コミットとは,レポジトリの現在の状態を記録することを意味し,いつでも過去のコミットした状態に戻すことが可能です. コミットする際は,コミット内容を表すタイトル「READMEの修正」とコメント「READMEに作成者を追加したよ」を入力しておきます.

Image from Gyazo

コミット内容をサーバ(GitHub)と同期するには Push(プッシュ) します. プッシュとは,ローカルPCからサーバにファイルを転送することを意味します.

Image from Gyazo

プッシュした後で,GitHubのウェブサイトを確認してみましょう. README.mdが更新され,作成者が表示されているはずです.

Image from Gyazo

ファイルの新規作成

レポジトリをクローンしたフォルダに, sample.txt を作成しましょう.sample.txtには下記の文字列を入力しておきます.

Apple
Banana
Grapes

GitHub Desktopでは,ファイルの新規作成を認識し,差分を表示してくれます. ここまでをコミットしてから,サーバにプッシュします.

Image from Gyazo

新たにsample.txtにLemonを追加します.

Apple
Banana
Grapes
Lemon

再度,コミットしてから,サーバにプッシュします. このとき「+Lemon」と表示され,差分が認識されていることが確認できます.

Image from Gyazo

ヒストリーの活用

ここで, History(ヒストリー) を確認してみましょう.ヒストリーは,レポジトリの変更履歴です.これまでにコミットした内容が表示されます.

Image from Gyazo

ヒストリーから,過去のコミットを Revert(リバート) することができます.リバートとは,過去のコミットを取り消して,以前の状態に戻すことを意味します. ここでは「Lemonを追加」をリバートしてみます. 「Lemonを追加」のコミットを選択して,右クリックし Revert this commit を選択します. すると一つ前の「Sample.txtの追加」の状態に戻ります.

Image from Gyazo

リバートしたコミットを,さらにリバートすることができます(リバートも一つのコミットとして記録されている). 「Revert “Lemonを追加”」をリバートすると,Lemonが追加された状態に戻ります. 最後に,ここまでのコミットをサーバにプッシュしておきましょう.

Image from Gyazo

ブランチの活用

ブランチの作成

ヒストリーは上述のようにリバートすることで,コミットの取り消しができますが,ヒストリーを分岐して記録することができません.そこで,Branch(ブランチ) を用います.デフォルトで作成されるブランチは main ブランチですが,これを分岐して新しいブランチを作成しましょう.メニューから New Branch を選択して,新規に sub ブランチを作成します.

Image from Gyazo

現在のブランチが main から sub に変更されていることが確認できます.現在,どのブランチで作業しているか常にチェックするようにしましょう.

Image from Gyazo

sub ブランチでファイル編集

作成した sub ブランチで sample.txt を下記のように編集しましょう.

Apple
Banana
Grapes
Lemon
Strawberry

ここまでを,コミットしてから,サーバにプッシュします.あくまで sub ブランチで作業していることに注意してください.

Image from Gyazo

ここで,ブランチを sub から main に変更してみましょう.上記の「Strawberryを追加」のコミットが適用されていないことがわかります.

Image from Gyazo

Image from Gyazo

ブランチをマージ

それでは,subブランチ のコミットを,mainブランチ に Merge(マージ) してみましょう.マージとは,2つのブランチの内容を統合することを意味します.マージするには, Pull(プル) リクエストを生成します.

Image from Gyazo

Image from Gyazo

ファイルの変更の Conflict(コンフリクト) がないことが確認されれば,マージすることが可能です.コンフリクトとは,ブランチのファイルの内容が衝突して,整合性がとれない状態を意味します.

Image from Gyazo

これでウェブサイトのsubブランチはmainブランチにマージされました.しかし,ローカルPCのレポジトリに変更は反映されていません.そこで,mainブランチの状態で fetch(フェッチ) します.フェッチとは,サーバの最新のレポジトリとローカルPCのレポジトリを同期することを意味します.これでレポジトリは最新の状態に更新され,Sample.txtにStrawberryの記述があることが確認できます.

Image from Gyazo

コンフリクトの解消

それでは意図的にコンフリクトを発生させてみましょう. まずは,subブランチでsample.txtに「Kiwi」を追加し,次のように修正します.

Apple
Banana
Grapes
Lemon
Strawberry
Kiwi

ここまでを,コミットしてから,サーバにプッシュします.Pullリクエストを生成して,mainブランチにマージしておきます.これで,サーバのレポジトリは更新されましたが,ローカルPCのレポジトリは元の状態(「Kiwi」が追加されていない状態)であることに注意してください.

Image from Gyazo

ここで,mainブランチに「Melon」を追加し,sample.txtを修正します.

Apple
Banana
Grapes
Lemon
Strawberry
Melon

ここまでを,コミットしてから,サーバにプッシュします.

Image from Gyazo

ここで,コンフリクトが発生します. サーバのsample.txtには Kiwi ,ローカルPCのsample.txtには Melon が記述されているからです.

Image from Gyazo

コンフリクトが発生すると,Sample.txtには下記のように,コンフリクトが発生した箇所が表示されます. ここでは,ローカルPCで作業した Melon を採用することにします.

Apple
Banana
Grapes
Lemon
Strawberry
<<<<<<< HEAD
Melon
=======
Kiwi
>>>>>>> da8696e008c86c8aefaf48c978b86cc7a6f2a8ac

Kiwi の箇所を削除して,Melon を残します.これで,コンフリクトは解消されました.

Apple
Banana
Grapes
Lemon
Strawberry
Melon

最後にマージして,サーバにプッシュしましょう.

Image from Gyazo

レポジトリの共有

プロジェクトをメンバーで共有するには,レポジトリに Collaborator(コラボレータ) として招待します.招待するには,ウェブサイトで [Setting]-[Manage Access]-[Invite a collaborator]から,GitHubのアカウントを入力します.レポジトリを作成したら向のアカウントnaoto-githubを招待してください.

Image from Gyazo

参考URL

愛知県名古屋市にある椙山女学園大学 文化情報学部 向研究室の公式サイトです. 専門は情報科学であり,人工知能やデータベースなどの技術要素を指導しています. この公式サイトでは,授業で使用している教材を公開すると共に, ベールに包まれた女子大教員のミステリアスな日常を4コマ漫画でお伝えしていきます. サイトに関するご意見やご質問はFacebookまたはTwitterでお問い合わせください.

スポンサーリンク