Git/GitHubのリポジトリ運用でお困りではないですか?
「リポジトリ完全ガイド」では、Git/GitHubのインストールから、チーム開発でのブランチ運用、プルリクエスト、コードレビュー、マージまで、開発現場で必須となる実用的な知識を徹底解説!
このガイドを読めば、Git/GitHubの基礎から応用までをマスターし、チーム開発を効率化できます。
この記事を読んでほしい人
- Git/GitHubを初めて使う人
- Git/GitHubでチーム開発を効率化したい人
- Git/GitHubでよくあるトラブルの解決策を知りたい人
この記事でわかること
- Git/GitHubのインストール方法から、チーム開発でのブランチ運用、プルリクエスト、コードレビュー、マージまで
- Git/GitHubを使って複数人でシステムやアプリを開発する際の基本的な使い方
- Gitを使ったリポジトリ運用でよくあるトラブルと解決策
リポジトリとは
リポジトリとは、英語表記で「repository」と表記し、主にバージョン管理システムにおいて、ソースコードおよびドキュメントなどのデータやファイルを格納している保管庫のようなものを指します。
単に保管しているだけでなく、データ変更時の担当者や変更内容などのログを逐一残すため、複数人でのデータ管理においても矛盾なく共有することができ、システムおよびアプリ開発においてなくてはならない存在です。
リモートリポジトリとは
リモートリポジトリとは、その名の通り、後述するGitに代表される分散型バージョン管理システムにおいて、ネットワーク上のサーバーで運用されるリポジトリのことです。
集中型バージョン管理システムにおけるリモートの1箇所にのみ設置されるリポジトリは、リモートリポジトリとは呼ばれません。
ローカルリポジトリとは
ローカルリポジトリとは、後述するGitに代表される分散型バージョン管理システムにおいて、各プロジェクトメンバーが操作するコンピュータ上に作成・複製されるリポジトリのことです。
プロジェクトメンバーがローカルリポジトリに変更を加えた後、管理者がローカルリポジトリの内容を精査し、リモートリポジトリに反映させます。
Gitとは
Gitとは、分散型バージョン管理システムのことであり、編集したソースコードに不備があったり操作を間違えたりした場合に、以下のような機能を搭載しています。
- すぐに以前のバージョンに戻す
- 変更内容の詳細をプロジェクトメンバー全員で共有できる
- 複数のメンバーが修正したソースコードを矛盾なく統合できる
GitHubとは
GitHubとは、グローバルな単位でソースコードやデザインデータなどを保存・公開できるソースコード管理サービスのことです。
有名で人気のあるサービスであることから、さまざまなプロジェクトで採用されることが多く、プログラマーやエンジニアであれば使用できて当たり前の状況になりつつあります。
GitおよびGitHubの基本的な使い方
リポジトリやGit、GitHubの概要を理解したところで、ここではGitおよびGitHubの基本的な使い方について順を追って解説します。
- Gitをインストールする
- Gitを初期設定する
- GitHubのアカウントを作成する
- リモートリポジトリを作成する
- ローカルリポジトリを作成する
- ローカルリポジトリにコミットする
- リモートリポジトリにプッシュする
GitとGitHubを初めて使うという方は参考にしてください。
Gitをインストールする
まずはじめに、Gitの公式サイト(https://gitforwindows.org)からGitをダウンロードします。
なお、ここではWindows環境を前提に話を進めます。
※MacOSであればGitはすでにインストール済みのため、Gitをわざわざインストールする必要はありません。
公式サイトのトップ画面にある「Download」をクリックし、インストーラーをコンピュータに保存します。
インストーラーをダウンロード後、ダブルクリックすると「このアプリがデバイスに変更を加えることを許可しますか?」と表示されるので、「はい」をクリックします。
次に「ライセンスに同意する」をクリックし、インストール先のフォルダを選択します。インストール先のフォルダはデフォルトのままでも問題ありません。
その後もダイアログにいくつかの質問が表示されますが、基本的にはデフォルト設定のまま進めます。
最後に「Install」をクリックするとインストールが完了します。
インストールが完了したら、Git Bashを起動します。
Git Bashは、WindowsでGitのコマンド操作を行うためのツールです。
次のコマンドを入力し、Gitのバージョンが表示されれば、Gitのインストールは成功です。
$ git –version |
Gitを初期設定する
まずはじめに、Gitにおいてソースコードの変更履歴を確認するために必要な情報を登録します。
前述したように、Gitを操作するには、通常WindowsではGit Bashを、MacOSではターミナルを使います。
ユーザー名登録
Gitのユーザー名を登録するには、次のコマンドを入力します。
git config –global user.name 任意のユーザー名 |
メールアドレス登録
登録したユーザー名に紐付けるメールアドレスを登録するには、次のコマンドを入力します。
git config –global user.email 登録済みのユーザー名に紐づけるメールアドレス |
ユーザー名およびメールアドレスの確認
Gitに登録したユーザー名とメールアドレスを確認するには、次のコマンドを入力します。
$ git config –list |
core.symlinks=false |
core.autocrlf=false |
color.diff=auto |
上記コマンドを入力すると、下部に下記のように登録したユーザー名及びメールアドレスが表示されます。
user.name=登録済みユーザー名 |
user.email=登録済みメールアドレス |
GitHubのアカウントを作成する
Gitの初期設定が完了したら、GitHubのアカウントを作成します。
GitHubの公式サイト(https://github.com)にアクセスし、トップ画面右上の「Sign up」をクリックするか、または「Email address」欄にメールアドレスを入力し、緑色の「Sign up for GitHub」をクリックして、画面表示に従ってアカウントを作成しましょう。
リモートリポジトリを作成する
GitHubのアカウントが作成できたら、リモートリポジトリを作成します。
GitHubにログインし、「Create Repository」をクリックします。
次に表示される画面では「Repository name」に任意のリポジトリ名を入力し、次の2種類のリポジトリのうちいずれかを選択します。
Public | 自分以外のユーザーでもソースコードを閲覧可能 |
Private | 自分のみソースコード閲覧可能(非公開) |
「Initialize this repository with a README」は、READMEファイル(リポジトリの説明や使い方が記載されたファイル)をあらかじめ作成する場合にのみチェックを入れます。
一番下の「Add .gitgnore: None」と「Add a license: None」は、デフォルトのまま「None」で問題ありません。「Create repository」をクリックします。
ローカルリポジトリを作成する
リモートリポジトリが作成できたら、ローカルリポジトリを作成します。
任意の名前でディレクトリを作成し、そのディレクトリ内で次のコマンドを入力すると、リポジトリとして初期化されます。
git init |
ローカルリポジトリにコミットする
続いて、ローカルリポジトリにコミットします。
コミットとは、ローカルリポジトリにファイルの追加や変更を反映させることです。
ここでは、ローカルリポジトリにファイルを追加してみましょう。
先ほど作成したディレクトリ内で、テキストエディタなどを使って「index.html」というファイルを作成します。
ファイルを作成したら、次のコマンドを入力し、「index.html」をインデックスに追加します。
git add index.html |
「index.html」をインデックスに追加できたら、次のコマンドを入力し、ローカルリポジトリにコミットします。
git commit -m “[Add] index” |
※コマンド内の「-m」は、コミットメッセージを入力するためのオプションです。変更内容を記録に残せるので、他のメンバーと共有したい情報がある場合などに活用するとよいでしょう。
次のコマンドを入力すると、コミットメッセージを含めた変更履歴を確認できます。
$ git log |
リモートリポジトリにプッシュする
ローカルリポジトリに変更を加えたら、GitHub上に作成したリモートリポジトリにプッシュ(反映)します。
まず、変更したローカルリポジトリとリモートリポジトリを関連付けるために、ローカルリポジトリ内で次のコマンドを入力します。
git remote add origin https://github.com/ユーザー/任意のリモートリポジトリ名.git |
次に下記のコマンドを入力しプッシュ(反映)します。
git push origin master |
このとき、GitHubのユーザー名とパスワードの入力が必要になります。
GitおよびGitHubでのプロジェクトチーム開発の基本的な使い方
次に、GitとGitHubを使って、複数人でシステムやアプリを開発する際の基本的な使い方を解説します。
- リポジトリをクローンする
- ブランチを作成する
- ブランチでコミットする
- リモートリポジトリにプッシュする
- コードレビューおよびマージする
- リモートリポジトリからプルする
チームを組んでシステム・アプリ開発を検討している方は目を通してみてください。
リポジトリをクローンする
プロジェクトでシステムやアプリを開発する際は、プロジェクトのリモートリポジトリからソースコードを取得します。
まず、先ほどの手順で作成したものとは別の名前でディレクトリを作成し、そのディレクトリ内で次のコマンドを実行します。
git remote add origin https://github.com/ユーザー/任意のリモートリポジトリ名.git |
ディレクトリ内に「index.html」が表示されれば、クローンは成功です。
ブランチを作成する
ブランチとは、複数のプロジェクトメンバーが同時並行で開発を行うための機能のことです。
デフォルトのブランチであるmasterを基に、次のコマンドを入力し、任意の名前のブランチを作成します。
git branch 任意のブランチ名 |
任意のブランチが作成できたら、任意のブランチ上で作業を行うために、次のコマンドを入力します。
git checkout 任意のブランチ名 |
上記コマンドを入力後、任意のブランチで作業できます。
ブランチでコミットする
先ほど作成した任意のブランチで「login.html」というファイルを作成してみましょう。
「login.html」を作成後、次のコマンドを入力し、任意のブランチにコミットします。
git add login.html |
git commit -m “[Add] login” |
リモートリポジトリにプッシュする
リモートリポジトリに、次のコマンドを入力して任意のブランチの内容をプッシュ(反映)します。
git push origin 任意のブランチ名 |
GitHubにログインし、任意のブランチに変更内容がプッシュ(反映)されていることと、masterに変更内容がプッシュ(反映)されていないことを確認しましょう。
コードレビューおよびマージする
任意のブランチでの変更が完了したら、masterブランチにマージ(統合)します。
※マージ(統合)を行う際にはGitHubに搭載されているpull request機能を活用すると管理者は各プロジェクトメンバーにコードレビューを行えます。
管理者は、各プロジェクトメンバーのソースコードの内容を精査し、レビューのコメントを入力し「Create pull request」をクリックします。
その後修正などを経て問題のないことが確認でき次第「Conversation」内の「Merge pull request」をクリックすると、同時にマージ(統合)がされます。
リモートリポジトリからプルする
これまでの工程では、リモートリポジトリ上のmasterブランチにマージ(統合)がされただけで、各プロジェクトメンバーのローカルリポジトリ上のmasterブランチにはマージ(統合)内容が反映されていません。
そのため、ローカルリポジトリのmasterブランチにプル(取得)し、最新情報に更新する必要があります。
ローカルリポジトリのmasterブランチに下記コマンドを入力して切り替えます。
git checkout master |
続いて「git pull」コマンドを実行し、リモートリポジトリのmasterブランチから最新情報をプル(取得)します。
このような作業を繰り返しながら、プロジェクトチームによる開発が進んでいきます。
Gitのトラブルシューティング|よくある問題を解決
ここでは、Gitを使ったリポジトリ運用でよくあるトラブルと、その解決策をまとめました。
- コミットに関するトラブル
- ブランチに関するトラブル
- プッシュ/プルに関するトラブル
Gitを使いこなしていると、予期せぬエラーや問題に直面することがあります。
Gitのトラブルシューティングは、エラーメッセージをよく読み、適切なコマンドを実行することで解決できますが、解決しない場合は、Gitの公式ドキュメントやオンラインコミュニティを参考にしましょう。
コミットに関するトラブル
うっかり間違えたコミットを取り消したい、コミットメッセージを修正したい、などの悩みはGitユーザーにはよくあることです。
<トラブルの内容>
- 間違ったファイルをコミットしてしまった
- コミットメッセージに誤りがあった
- 直前のコミットを取り消したい
<解決策>
- コミットの取り消し:git reset コマンドでコミットを取り消すことができます。
- git reset –soft HEAD^:直前のコミットを取り消し、変更はステージングエリアに残ります。
- git reset –hard HEAD^:直前のコミットを取り消し、変更も破棄されます。
- コミットメッセージの修正:git commit –amend コマンドで直前のコミットメッセージを修正できます。
- コミット履歴の修正:git rebase -i コマンドで過去のコミット履歴を編集できます。
ブランチに関するトラブル
ブランチのマージでコンフリクトが発生したり、誤ってブランチを削除してしまったりするトラブルは、チーム開発で特に注意が必要です。
<トラブルの内容>
- マージの際にコンフリクトが発生した
- ブランチを誤って削除してしまった
<解決策>
- コンフリクトの解決:コンフリクトが発生したファイルを直接編集し、競合している部分を解消します。その後、git add と git commit で変更を確定します。
- 削除したブランチの復元:git reflog で削除されたブランチの履歴を見つけ、git checkout -b <ブランチ名> <コミットID> で復元できます。
プッシュ/プルに関するトラブル
リモートリポジトリとの連携で発生するプッシュ/プルのエラーは、ネットワーク環境や権限設定が原因であることが多い傾向にあります。
<トラブルの内容>
- プッシュが拒否された
- プルができない
<解決策>
- プッシュが拒否された場合:
- リモートリポジトリが更新されている場合は、git pull で最新の状態に更新してから再度プッシュします。
- 権限が不足している場合は、リポジトリの管理者に問い合わせます。
- プルができない場合:
- ネットワーク接続を確認します。
- リモートリポジトリの URL が正しいか確認します。
リポジトリに関するよくある質問
ここからは、リポジトリに関するよくある質問にMattockシニアコンサルタントが回答していきます。
- Q1. リポジトリをクローンするとどうなるの?
- Q2. リポジトリとは何を管理するもの?
- Q3. ローカルリポジトリを確認する方法は?
- Q4. GitHubのリポジトリをクリアするには?
- Q5. Gitのクローンの目的は何ですか?
- Q6. Gitでクローンするとどうなる?
- Q7. リポジトリはなぜ必要なのか?
- Q8. レポジトリーとはITで何ですか?
リポジトリについてもう少し理解を深めておきたいという方は参考にしてください。
Q1. リポジトリをクローンするとどうなるの?
リポジトリをクローンすると、リモートリポジトリ(たとえばGitHub上にあるリポジトリ)の全てのファイルや変更履歴が、自分のPC上にコピーされます。
これにより、ローカル環境で自由に編集や実験を行うことができ、作業が終わったらリモートリポジトリに反映させることが可能です。
Q2. リポジトリとは何を管理するもの?
リポジトリは、主にソースコードやそれに関連するファイル(ドキュメント、設定ファイルなど)を管理するものです。
バージョン管理システム(Gitなど)と連携することで、ファイルの変更履歴を追跡し、過去の状態に戻したり、複数人で同時に作業したりすることが可能になります。
Q3. ローカルリポジトリを確認する方法は?
ローカルリポジトリは、PC内のファイルシステム上に存在するため、Git Bashなどのターミナルソフトを使って、リポジトリをクローンしたディレクトリに移動し、git status コマンドを実行すると、現在の状態を確認できます。
また、GUIクライアントツールを使用すれば、視覚的に確認することも可能です。
Q4. GitHubのリポジトリをクリアするには?
GitHubのリポジトリを完全にクリア(空にする)には、以下の手順で行います。
- リポジトリの設定ページを開く
- Optionsタブを選択
- Danger Zoneセクションにある「Delete this repository」ボタンをクリック
- リポジトリ名を入力して確認し、削除を実行
ただし、この操作は元に戻せないので、注意が必要です。
Q5. Gitのクローンの目的は何ですか?
Gitのクローンの目的は、リモートリポジトリの完全なコピーをローカル環境に作成することです。
これにより、オフラインでも作業できるようになり、ネットワークに依存せずにバージョン管理が可能になります。
また、複数人で開発する場合、各々がリポジトリをクローンして作業することで、効率的に共同作業を進められます。
Q6. Gitでクローンするとどうなる?
Gitでクローンを実行すると、以下のようになります。
- リモートリポジトリの全履歴がローカルにコピーされます。
- ローカルリポジトリとリモートリポジトリが紐づけられます。
- 以降、ローカルで行った変更は、プッシュ操作でリモートリポジトリに反映できます。
Q7. リポジトリはなぜ必要なのか?
リポジトリは、以下の理由で必要とされます。
- バージョン管理:ファイルの変更履歴を管理し、過去の状態に戻したり、変更内容を比較したりできる
- バックアップ:ファイルが消失した場合でも、リポジトリから復元できる
- 共同作業:複数人で同時に開発する場合、変更内容を共有し、競合を解決できる
Q8. レポジトリーとはITで何ですか?
リポジトリは、ITの文脈では、主にソースコードや関連ファイルを保管するための場所を指します。
バージョン管理システムと組み合わせて使用されることが多く、ソフトウェア開発において重要な役割を果たします。
まとめ
この記事では、GitおよびGitHubの基本的な使い方をはじめ、プロジェクトチームによる開発の際の使い方について解説しました。
GitおよびGitHubによってリポジトリを正しく活用することで、プロジェクトメンバー全員がそれぞれ並行作業を行いながら、効率よくシステムおよびアプリ開発を行うことができます。
もちろん、Git以外にもバージョン管理システムにはさまざまなものがあります。
ご自身に合ったバージョン管理システムを活用し、システムおよびアプリ開発に役立ててください。