そろそろGitくらい使ってくれません?

Gitとは?

Gitはバージョン管理システムの一種です。

HTMLやCSS、JavaScript、PHPといったWeb製作に必要なソースコードの書かれたテキストファイル(に限りませんが)の更新の履歴を確認することができます。

また、ソースコードを共有するのにも使われており、例えば複数のプログラマが別々の機能を実装する際に分担して作業することができるようになるのです。

バージョン管理?それ何か得するの?

たとえば、JavaScriptやPHPなどで開発したり機能を追加しようとする際、どんどんプログラムを書いていくわけですが、途中で「あれ?なんか上手く動かなくなったな……あれ!?何処と何処をいじったんだっけ!?あぁ元に戻らない!うあああ!頼むぅ!上手く動いてた時点まで戻ってくれぇぇぇ!!」ってなる場合があるワケですよ。

絶望するエンジニアの図

そんなとき、バージョン管理システムを使ってれば、少なくとも上手く動いてた時点までは戻すことができるようになって、そこからまた開発再開することができるようになります。

Gitの仕組み

バージョン管理システムは、管理するファイルの格納されたディレクトリを「リポジトリ」という形で管理しています。

主にサーバーに置くものを「リモートリポジトリ」、それぞれの作業者の端末に置くものを「ローカルリポジトリ」といいます。

集中型と分散型

バージョン管理システムには集中型と分散型があり、Gitは分散型です。

集中型と分散型の主な違いは、リポジトリの数とその扱いです。

集中型

集中型の構造

集中型の場合はリポジトリはサーバー上のリモートリポジトリ1つしかありません。そのため、サーバーに接続できない環境ではバージョン管理をすることができなくなります。

分散型

分散型の構造

分散型ではそれぞれの端末内にローカルリポジトリが作成されるため、オフライン環境でもバージョン管理システムを利用することが可能になります。

また、集中型ではリモートリポジトリやサーバーに問題が発生した場合に元に戻すのが大変ですが、分散型はローカルにもリポジトリを持っているため、リモートが破損した場合でもローカル側のデータから復旧させることが可能です。

Dropboxでいいんじゃないの?

現在、複数人での製作時にファイル共有の主な手段としてDropboxなどのクラウドストレージを利用している人も多いと思います。

最近伺った中では、そこそこ大きい企業さんで複数人で分担作業しているような場合でもWindowsの共有フォルダで共有しているというお話もうかがいました。ありえへんわ

Dropboxならまだしも、Windowsの共有フォルダはさすがにありえないです。

何が問題かと言いますと、たとえば複数人で同時に同じファイルを編集した場合、先に保存をかけたほうの人の編集内容が消えてしまうわけです。

Dropboxの構造

消えとるがな

こんなときでも「マージ」という機能を使って、別々の人が編集した内容を1つのファイルとしてまとめることができるんです。そう、バージョン管理システムならね。(もうこのネタは古いか)

Dropboxでは更新履歴から前の状態に戻すことができますが、マージはできません。

さらにDropboxでは保存するたびにバージョンが更新されていきますが、あれ多過ぎてどのバージョンがどの時点なのか分からないですよね。

Dropboxのバージョン履歴

でも、Gitを使えば任意の時点でバージョンを設定できるので、コーディングしながら細かく保存を繰り返しても区切りの良いところで「ここでバージョン1つ進める!」という風にできるわけです。

一応言っておくとWindowsの共有フォルダでは前のバージョンに戻すこともできないので……わかりますよね?

さすがにWeb制作会社でその状態はまずいんじゃないですかね。そろそろGitくらい使ってくれません?と言いたいだけのために今日は記事を書きました。

じゃあ使い方教えてよ

Gitのインストールは公式サイトからインストーラーをダウンロードして起動すればOKです。

基本的には前回の記事で紹介したような黒い画面を使って操作するんですが、SourceTreeなどのGUIクライアントも提供されており、プログラマでもSourceTreeを使っている人は少なくありません。

以前、姫路でもGit勉強会を開催しましたが、姫路ゆるいWeb勉強会のほうで、そのうちにまたGitをテーマにしますので、今から始めたい方はゆるいWebにご参加いただければ、ハンズオン形式でSourceTreeからのGitの使い方をご説明します。

まぁその頃にまた記事で準備のしかたとか書くと思いますけどね。