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

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 が存在しています.このファイルはレポジトリの説明書であり,ウェブサイトののトップ画面に表示されます.メモ帳などのエディタでファイルを開き,下記のように作成者を追加して保存してください.拡張子の md は,手軽にウェブページを記述できるMarkdown(マークダウン)記法を表しています.

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

## 作成者
向 直人

するとGitHub Desktopでは,ファイルの上書きを認識し,差分を表示してくれます.それでは,このファイルの変更を Commit(コミット) します.コミットとは,レポジトリの現在の状態を記録することを意味します.コミットしておけば,いつでもコミットした状態に戻すことが可能です.コミットする際は,コミット内容を表すタイトルとコメントを入力しておきます.

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

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

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を修正します.

Apple
Banana
Grapes
Lemon
Strawberry
Kiwi

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

Image from Gyazo

ここで,mainブランチで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でお問い合わせください.

スポンサーリンク