Gitを使ってバージョン管理をしよう 〜いろんなGitサービスの紹介〜
どうも、Koheiです。
今日は最近関わることのあったGitについて
書いてみようと思います。
乱立する更新版ファイルにお悩みのあなたへ
みなさんはこんな経験ありませんか?
今度、プレゼンをすることになったのでカンペを作ることになりました。
まず、2018_プレゼンカンペ.txtを作成して、初期案を作りました。
しばらくして、ちょっと修正したくなったあなたは
過去のバージョンも一応残しておきたかったので
2018_プレゼンカンペ_修正版.txt
という名前で修正版ファイルを作りました。
さらに翌日、いいフレーズが浮かびファイルを修正します。
2018_プレゼンカンペ_修正_完全版.txt
いや、ちょっとまて、ここはこうしよう。これで最終版だ。
2018_プレゼンカンペ_修正_完全_最終.txt
あ、やっぱこうした方がきれいか?
2018_プレゼンカンペ_修正_完全_真.txt
その後フォルダをみてみると
- 2018_プレゼンカンペ.txt
- 2018_プレゼンカンペ_修正版.txt
- 2018_プレゼンカンペ_修正_完全版.txt
- 2018_プレゼンカンペ_修正_完全_最終.txt
- 2018_プレゼンカンペ_修正_完全_真.txt
うわああああ
最終的にカオスです。結局どれが最終版やねん、と。
#ちなみに上のパターンは僕の研究室の同期がやっていた実話です。
こういうのを解決するために作られたのがgitです。
Gitってなに?
簡単に言うとバージョン管理ツールです。
バージョン管理というのは、だれが、いつ、どの部分を変更したかを記録します。
Gitへ複数のユーザがファイルのアップロード(push)、ダウンロード(pull)を行い
変更結果を管理することができます。
利用イメージは下の通り
さまざまGit用語がありますが、ざっくりで考えるなら
ローカルリポジトリ:ユーザのパソコン上のフォルダ
リモートリポジトリ:Git上のフォルダ
push: Gitへのアップロード
pull: Gitへのダウンロード
なイメージです。
ただし、Gitはファイルをアップロードするだけでは変更履歴を更新しません。
最終的に更新を反映するためにはCommitという処理が必要になります。
複数の人が同時にアップロード、ダウンロードし、処理が競合するケースが考えられるため、ファイルをアップしたタイミング(push/pull)と、gitが変更を受領するタイミング(commit)を区別します。これはデータベースでも取り入れられている仕組みですね。
いろんなGitサービス
さて、このgitですが、自分で導入しなくてもクラウド上でサービスとして提供しているものがたくさんあるのでいくつか紹介します。
1. GitHub
Gitを利用した、開発者を支援するWebサービスのひとつです。
無料でGitサービスを利用できますが、基本的にアップロードしたものは全体公開されます。閲覧制限等を実施したい場合は有料です。
Github desktop(windows, macでソフトあるよ)などと合わせれば比較的簡単に扱うとこができます。
エンジニア向きなイメージがありますが、最近では変更前後の画像をあげて、デザイナー向けにも利用されているようです。
今年の6月にmicrosoftに買収された大きくニュースになりましたね。
2. Bitbucket
同じくクラウド版Gitサービスの一つです。
基本的にgithubと同じようなサービスですが、こちらはひとつのリポジトリの利用ユーザが5人以下であれば、無料で非公開のリポジトリが作れます。
3. codecommit
https://aws.amazon.com/jp/codecommit/
こちらも5userの利用までなら無料で非公開リポジトリが使えます。
また、AWS上の機能なので、他のAWS系のツールとの連携に強みを持っています。
Githubなどと比較すると昨日は少なめです。
4. gitlab
さて、これまでクラウド型Gitサービスを紹介しましたが、ここで紹介するgitlabは自分でサーバを立てて利用するソフトになります。
セキュリティの問題でクラウド上のものは使えない。。。などの要件がある人向きです。
無料版のCommunity Edition(CE)と有料版のEnterprise Edition(EE)の2バージョンがあり、EEだとサポートが受けられたり、利用できる機能が多かったりします。
古いバージョンなら日本語のパッチも存在します。
まとめ
今日はバージョン管理ツールのGitと、その機能を提供している様々なツールを紹介しました!日々アップデートされているソフトなので今後とも動きをキャッチして、適切なツールを使っていきたいですね。
ではでは