非エンジニアでも知らないとヤバイGit Part2

はじめに

前回は、Gitの基本的な機能、リモートリポジトリ・ローカルリポジトリ、コミットについて説明した。
今回は、 Gitの機能の1つであるクローン、Push、Pullについて説明する。

クローンとは

共同で開発を進める際に作業を分担することがよくある。必ずしも同じタイミングで全員が作業に参加する訳ではないので、工程によって作業のスタートがずれることがある。
後から作業に参加する開発者は、どのような意図・状況で現在の状態になっているのか把握できなくなる。
しかし、このような問題はGitのクローン機能を使用すれば解決できる。
クローンは、すでに変更履歴が存在するリモートリポジトリ複製し、自分のマシンにローカルリポジトリを作成する操作。
リモートリポジトリの内容をまるごと自分の手元のマシンにダウンロードできる。
ただソースコードをダウンロードするのではなく、変更履歴も複製されるので、過去の履歴を参照して状況を把握しやすくなる。

Pushとは

前回も説明したが、Gitでは複数の開発者が共有しているリモートリポジトリを使って、各自のマシンにダウンロードされているローカルリポジトリの変更履歴を共有することでバージョン管理をしている。
Pushは各自のマシンのローカルリポジトリの変更履歴を、複数の開発者が共有しているリモートリポジトリにアップロードする操作のこと。
Pushを行うとPushしたローカルリポジトリとリモートリポジトリの変更履歴が同じ状態になる。

Pullとは

Pushを行っただけの段階では、Pushした開発者以外はリモートリポジトリと自分のマシンのローカルリポジトリは同じ状態ではない。
リモートリポジトリ自分のマシンのローカルリポジトリの状態を一致させるには、Pullという操作を行う。
Pullは、Pushの反対で変更履歴をダウンロードして自分のマシンのローカルリポジトリを、最新のリモートリポジトリの状態に更新する。
最後にPullした後に、他の開発者と同じファイルを作業していて他の開発者が先にPushして、その後自分がPushを行う場合は自分のPushは拒否される。
このように作業ファイルが衝突した場合は、他の履歴での変更を取り込む(マージ)までは自分のPushは拒否される。
これは、そのままPushできてしまうと先にPushした開発者の変更履歴が上書きされて消えてしまうからだ。

最後に

今回は、クローン、Push、Pullについて説明した。
次回は、マージについて詳しく説明する。
画像

関連記事