Git を使うと「ローカルリポジトリ」と「リモートリポジトリ」をうまく使い分けて、次のような流れで効率的にチーム開発を進めることができます。
(ステップ1) ある開発者は、適当なタイミングでローカルリポジトリに対して更新したファイルをコミットする
※ コミット(commit)・・・更新したファイルの内容をローカルリポジトリに保存すること
(ステップ2) その開発者は、自分に割り当てられた作業が全て完了するまでステップ1を繰り返す。
(ステップ3) 自分の作業が終わったら、その開発者はリモートリポジトリに対してプルする。
※ プル(pull)・・・他の開発者がリモートリポジトリにアップした更新内容をダウンロードして取り込むこと。
(ステップ4) 衝突が起きたら修正する。
※ 衝突(コンフリクト、conflict)・・・他の開発者の更新内容と自分の更新内容が被ること。
(ステップ5) 衝突が無くなるまでステップ3と4を繰り返す。
(ステップ6) リモートリポジトリに対してプッシュする。
※ プッシュ(push)自分の更新内容をリモートリポジトリにアップすること
(ステップ7) ステップ1に戻り新しい作業を開始する。
以上の話をまとめたのが以下の図1です。
Gitはリモートリポジトリがネットワーク(場合によってはローカルマシン)上に複数あり、 複数の開発者がプライベートなローカルリポジトリを分散して持っているというシステムになっています。
この様な形態をもつバージョン管理システムを「分散型バージョン管理システム」と呼びます。
図1: Git によるチーム開発の流れ
※1 この図ではリモートリポジトリは1つしか描いてませんが、実際には複数のリモートリポジトリを登録することが出来ます
※2 ちなみに「git remote -v」コマンドにより登録済のリモートリポジトリを確認できます