概要
Gitはプログラムなどのソースコードを管理する為の分散型バージョン管理システム。誰が、いつ、どこを編集したのか、などの変更履歴を保存したり、ファイルを以前のバージョンに戻したりするのに利用される。他にも開発していく上でさまざまな便利な機能があったりする。
分散型って?
バージョン管理システムには大きく分け3種類ある。
ローカルバージョン管理システム
ローカルバージョン管理システムはその名の通り、ローカルでの管理のみ。他者との共有はできない。
集中型バージョン管理システム
集中型は他の開発者と共同作業するために開発された形で、中央サーバーでデータを一括管理する。その為、中央サーバーに障害がおきると、その間作業できなかったり、データが失われてしまうところが問題点。
分散型バージョン管理システム
分散型は、リモートリポジトリからすべてのデータをローカルにクローンし作業を行う。リモートリポジトリで障害が起きてもローカルリポジトリで作業を行うことができる。もしリモートリポジトリのデータが失われてしまっても、ローカルレポジトリはリモートリポジトリの全データのバックアップであるため、すぐに復旧することができる。
Gitのはじまり
GitはLinuxカーネル開発のコミュニティで利用する為にLinus Torvaldsによって開発された。 Gitは初期の約2日間以外の部分はgit自身によってセルフホスティングされ、初期以外のログはすべてのこっているので興味のある人は見てみてるといいかもしれない。 2019年6月7日現在で大体5.5万コミットある。
Gitの最初のコミット
Gitが自身へのファーストコミットを行ったのは、2005-04-07 15:13:13 -0700のこと。それ以降、開発が続いている。 最初のハッシュ値はe83c5163316f89bfbde7d9ab23ca2e25604af290
。
Gitのリポジトリ
gitの開発リポジトリ gitのリポジトリ
GitHubのリポジトリは、上記のリポジトリのクローンだから、Pull Request送っても意味ない。 参加したかったらここらへんを読んでみることを良い。
主なサービス
GitHub以外にもGitを利用できるサービスは多くある。機能が少し違ったり、値段が違ったり、チーム人数の制限があったりするから用途にあった選択が必要。
GitFlow
Gitは比較的簡単にマージできるという特徴がある。それを利用して、ブランチ別に役割を持たせるワークフローやブランチモデルのことをGitFlowという。似たようなものとしては、
- GitHubFlow
- GitLabFlow
などもある。それぞれ特徴があり、自身のチームや環境によって選ぶ必要がある。 既存のモデルをベースに新たに「GitFeatureFlow」なども考えられている。Gitを複数人で使用するなら、何らかの形で導入することになると思う。導入しなければ、masterブランチオンリー開発。
GitFlowのモデル
基本的にブランチごとに役割がある。 主に、
- main(master)
- develop
- feature
- release
- hotfix
に分かれる。機能ごとに、さらにブランチを分け、テストが完了したら、マージする流れ。これ以上は詳しく書かないが、簡単に理解したければ、ここを読むのがいいと思う。
他のバージョン管理管理システム
集中型
- CVS
- Subversion(SVN)
分散型
- Bazaar
- Mercurial
- Veracity