Gitで共同作業を行うために必要となるのがリモートリポジトリで、前の記事ではローカルリポジトリにコミットしたところまでを学習しました。
この章ではローカルリポジトリとリモートリポジトリについて理解する内容になります。
リモートリポジトリについて
ローカルリポジトリは自身のPC内にあるリポジトリで、リモートリポジトリはインターネット上にあるリポジトリです。
Gitを使って複数人で作業したい場合はリモートリポジトリの作成が必要になります。
このリモートリポジトリの環境を提供しているのがGitHubです。リモートリポジトリは複数作成することができますが、混乱を防ぐために1つのプロジェクトにつき、1つのリモートリポジトリを用意することが基本となります。

・ローカルリポジトリのデータをリモートリポジトリに反映させることをpush(プッシュ)
・リモートリポジトリのデータをローカルリポジトリに反映させることをpull(プル)
リモートリポジトリの状態
GitHubではリモートリポジトリの状態を公開か非公開の設定ができます。

・誰でも見れる状態が公開Public(パブリック)
・許可した人のみ閲覧可能な状態が非公開Private(プライベート)
リモートリポジトリ複数人で作業
一番最初にする作業としてリモートリポジトリを複製したデータをローカルリポジトリに作る必要がありこの作業をClone(クローン)といいます。

リモートリポジトリのデータをローカルリポジトリに作り、全員のデータ内容が同じになった状態でプロジェクトを進めていきます。
それぞれローカルリポジトリで作業しながら、リモートリポジトリにプッシュとプルを繰り返しながらプロジェクトを進めていくイメージです。

データの衝突
ローカルでそれぞれ作業をした内容をリモートリポジトリにプッシュしていく流れになりますが、ここで疑問にることがあり、同じ行に別のコード内容が記述されていた場合はどうなるか?ということです。

ローカルリモートリポジトリからリモートリポジトリにプルからプッシュした際にマージコミットといわれるデータが作成されます。
後からプルする人からは、マージコミットのデータも一緒に取ってきてからプッシュする流れになります。

例えば、index.htmlの100行にリモートリポジトリに初めにプッシュした人のデータが<p>テスト</p>と入力されていて、そのデータを2人目の人がローカルリモートリポジトリのindex.htmlの100行に<h1>見出し</h1>と入力されている状態で、リモートリポジトリからプルした際に、100行に記述されている内容と違うということで、データの衝突コンフリクト(conflict)という状態になります。
コンフリクトが起きた後の対処法に関しては別の章で解説します。
次の章では、GitHubのサイト構成について理解しリモートリポジトリの作り方について解説します。