IT社員3人組によるリレーブログ

某IT企業に勤める同期3人が、日常で思ったことを記録していきます (twitter: @go_mount_blog)

Gitを使ってバージョン管理をしよう 〜いろんなGitサービスの紹介〜

どうも、Koheiです。

今日は最近関わることのあったGitについて

書いてみようと思います。

 f:id:go-mount:20180811130233j:plain

乱立する更新版ファイルにお悩みのあなたへ

 

みなさんはこんな経験ありませんか?

 

今度、プレゼンをすることになったのでカンペを作ることになりました。

まず、2018_プレゼンカンペ.txtを作成して、初期案を作りました。

 

しばらくして、ちょっと修正したくなったあなたは

過去のバージョンも一応残しておきたかったので

2018_プレゼンカンペ_修正版.txt

という名前で修正版ファイルを作りました。

 

さらに翌日、いいフレーズが浮かびファイルを修正します。

2018_プレゼンカンペ_修正_完全版.txt

 

いや、ちょっとまて、ここはこうしよう。これで最終版だ。

2018_プレゼンカンペ_修正_完全_最終.txt

 

あ、やっぱこうした方がきれいか?

2018_プレゼンカンペ_修正_完全_真.txt 

 

その後フォルダをみてみると

  • 2018_プレゼンカンペ.txt
  • 2018_プレゼンカンペ_修正版.txt
  • 2018_プレゼンカンペ_修正_完全版.txt
  • 2018_プレゼンカンペ_修正_完全_最終.txt
  • 2018_プレゼンカンペ_修正_完全_真.txt

 

うわああああ

最終的にカオスです。結局どれが最終版やねん、と。

#ちなみに上のパターンは僕の研究室の同期がやっていた実話です。

 

こういうのを解決するために作られたのがgitです。

Gitってなに?

f:id:go-mount:20180811130407p:plain

簡単に言うとバージョン管理ツールです。

バージョン管理というのは、だれが、いつ、どの部分を変更したかを記録します。

 

Gitへ複数のユーザがファイルのアップロード(push)、ダウンロード(pull)を行い

変更結果を管理することができます。

利用イメージは下の通り

 

f:id:go-mount:20180811125722p:plain

 

さまざまGit用語がありますが、ざっくりで考えるなら

ローカルリポジトリ:ユーザのパソコン上のフォルダ

リモートリポジトリ:Git上のフォルダ

push: Gitへのアップロード

pull: Gitへのダウンロード

なイメージです。

 

ただし、Gitはファイルをアップロードするだけでは変更履歴を更新しません。

最終的に更新を反映するためにはCommitという処理が必要になります。

複数の人が同時にアップロード、ダウンロードし、処理が競合するケースが考えられるため、ファイルをアップしたタイミング(push/pull)と、gitが変更を受領するタイミング(commit)を区別します。これはデータベースでも取り入れられている仕組みですね。

 

いろんなGitサービス

さて、このgitですが、自分で導入しなくてもクラウド上でサービスとして提供しているものがたくさんあるのでいくつか紹介します。

 

1. GitHub

https://github.com/

Gitを利用した、開発者を支援するWebサービスのひとつです。

無料でGitサービスを利用できますが、基本的にアップロードしたものは全体公開されます。閲覧制限等を実施したい場合は有料です。

Github desktop(windows, macでソフトあるよ)などと合わせれば比較的簡単に扱うとこができます。

f:id:go-mount:20180811132003p:plain

 

エンジニア向きなイメージがありますが、最近では変更前後の画像をあげて、デザイナー向けにも利用されているようです。

 

今年の6月にmicrosoftに買収された大きくニュースになりましたね。

www.atmarkit.co.jp

 

2. Bitbucket 

https://bitbucket.org/

同じくクラウド版Gitサービスの一つです。

基本的にgithubと同じようなサービスですが、こちらはひとつのリポジトリの利用ユーザが5人以下であれば、無料で非公開のリポジトリが作れます。

f:id:go-mount:20180811132641p:plain

 

3. codecommit

https://aws.amazon.com/jp/codecommit/

AWSの提供しているGitリポジトリサービスです。

こちらも5userの利用までなら無料で非公開リポジトリが使えます。

また、AWS上の機能なので、他のAWS系のツールとの連携に強みを持っています。

Githubなどと比較すると昨日は少なめです。

f:id:go-mount:20180811133422p:plain

 

4. gitlab

さて、これまでクラウド型Gitサービスを紹介しましたが、ここで紹介するgitlabは自分でサーバを立てて利用するソフトになります。

 

セキュリティの問題でクラウド上のものは使えない。。。などの要件がある人向きです。

無料版のCommunity Edition(CE)と有料版のEnterprise Edition(EE)の2バージョンがあり、EEだとサポートが受けられたり、利用できる機能が多かったりします。

古いバージョンなら日本語のパッチも存在します。

 

f:id:go-mount:20180811133928p:plain

まとめ

今日はバージョン管理ツールのGitと、その機能を提供している様々なツールを紹介しました!日々アップデートされているソフトなので今後とも動きをキャッチして、適切なツールを使っていきたいですね。

 

ではでは