非エンジニアでも知らないとヤバイ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について説明した。
次回は、マージについて詳しく説明する。
株式会社Knocknote代表取締役。大学卒業後不動産営業に従事した後、ITの重要性を強く感じエンジニアへ転職。ソーシャルゲーム開発、スマホアプリやPepperアプリの企画及び開発、高校でのプログラミング講師などの業務に携わる。2017年1月に創業。現在はプログラミング教育事業、システム開発事業を展開。今後は海外向けの教育事業をさらに拡大させていく事が目標。著書:『作って学べるUnity超入門』(技術評論者)