Git

概要

Gitはプログラムなどのソースコードを管理する為の分散型バージョン管理システム。誰が、いつ、どこを編集したのか、などの変更履歴を保存したり、ファイルを以前のバージョンに戻したりするのに利用される。他にも開発していく上でさまざまな便利な機能があったりする。

分散型って?

バージョン管理システムには大きく分け3種類ある。

ローカルバージョン管理システム

ローカルバージョン管理システムはその名の通り、ローカルでの管理のみ。他社との共有はできないよ。

集中型バージョン管理システム

集中型は他の開発者と共同作業するために開発された形で、中央サーバーでデータを一括管理する。その為、中央サーバーに障害がおきると、その間作業できなかったり、データが失われてしまったりするところが問題点。

分散型バージョン管理システム

分散型は、リモートリポジトリからすべてのデータをローカルにクローンし作業を行う。リモートリポジトリで障害が起きてもローカルリポジトリで作業を行うことができる。もしリモートリポジトリのデータが失われてしまっても、ローカルレポジトリはリモートリポジトリの全データのバックアップであるため、すぐに復旧することができる。これがGit。

Gitのはじまり

GitはLinuxカーネル開発のコミュニティで利用する為にLinus Torvaldsによって開発された。 Gitは初期の約2日間以外の部分はgit自身によってセルフホスティングさせ開発されて、初期以外のログはすべてのこっているから興味のある人は見てみてね。 2019年6月7日現在で大体5.5万コミットある。

Gitの最初のコミット

Gitが自身へのファーストコミットを行ったのは、2005-04-07 15:13:13 -0700のこと。それ以降、開発が続いている。 最初のハッシュ値はe83c5163316f89bfbde7d9ab23ca2e25604af290

Gitのファーストコミット

GitHubでのファーストコミットログ

Gitのリポジトリ

gitの開発リポジトリ gitのリポジトリ

GitHubのリポジトリは、上記のリポジトリのクローンだから、Pull Request送っても意味ない。 参加したかったらここらへんを読んでみるとよき。

主なサービス

GitHub以外にもGitを利用できるサービスはいっぱいある。機能が少し違ったり、値段が違ったり、チーム人数の制限があったりするから用途にあった選択を。

GitFlow

Gitは比較的簡単にマージできるという特徴がある。それを利用して、ブランチ別に役割を持たせるワークフローやブランチモデルのことをGitFlowという。似たようなものとしては、

  • GitHubFlow
  • GitLabFlow

などもある。それぞれ特徴があり、自身のチームや環境によって選ぶ必要がある。 既存のモデルをベースに新たに「GitFeatureFlow」なども考えられている。Gitを複数人で使用するなら、何らかの形で導入することになると思う。導入しなければ、masterブランチオンリー開発。

GitFlowのモデル

基本的にブランチごとに役割がある。 主に、

  • master
  • develop
  • feature
  • release
  • hotfix

に分かれる。機能ごとに、さらにブランチを分け、テストが完了したら、マージする流れ。

これ以上は詳しく書かないが、簡単に理解したければ、ここを読むのがいいと思う。

他のバージョン管理管理システム

集中型

  • CVS
  • Subversion(SVN)

分散型

  • Bazaar
  • Mercurial
  • Veracity

参考文献