Gerritとは?Gitとの違いも含めて会話形式で解説!
この記事でわかること
この記事では、初心者向けに次の内容を解説します。
・Gerritとは何か
・Gitとの違い
・GitHubのプルリクエストとの違い
・Gerritを使うメリット
Gerritとは?

Gerritって?Gitとは違うの?

違うよ。ざっくり言うと、
Gitはソースコードの変更履歴を管理する道具
GerritはGitの変更内容をレビューするための仕組み
って感じ。
Gitは、ファイルの変更履歴を記録して、過去の状態に戻したり、誰がどこを変更したか確認したりできるバージョン管理システムなんだ。
Gitは「変更履歴を管理する道具」

まずGitって何だったっけ?

Gitは、プログラムのソースコードを管理するためによく使われるツールだね。
たとえば、チームで開発していると、
- 誰がどこを変更したか
- いつ変更したか
- 前の状態に戻せるか
- 複数人の変更をどうまとめるか
を管理する必要があるでしょ?





うん。勝手に上書きされたら困るもんね。

そうそう。
そのために使うのが Git。
Gerritは「変更内容をレビューする場所」

じゃあGerritは何をするの?

Gerritは、Gitで管理しているコードに対して、
その変更を本当に取り込んでいいかレビューするためのWebツール だよ。
公式にも、GerritはGitベースの開発向けのWebベースのコードレビューシステムとして説明されているよ。





レビューって、誰かがコードを見て「OK」とか「ここ直して」って言うやつ?

Gerritでは、変更内容を見ながらコメントしたり、承認したり、修正を依頼したりできる。
例えるなら

GitとGerritをたとえるなら、こんな感じ。

| 用語 | たとえ |
|---|---|
| Git | ノートの変更履歴を残す仕組み |
| Gerrit | 先生や先輩が提出物をチェックする場所 |

Gitは「記録する」、Gerritは「確認する」ってことか。
GitとGerritの違い

違いを表にするとこんな感じ。

| 項目 | Git | Gerrit |
|---|---|---|
| 役割 | 変更履歴を管理する | コードレビューをする |
| 主な目的 | ソースコードを管理する | 変更を取り込んでよいか確認する |
| 使う場面 | 開発中ずっと使う | 変更を共有・承認するときに使う |
| 操作イメージ | commit、push、pullなど | レビュー、コメント、承認など |
| 関係性 | 土台 | Gitの上に乗るレビューシステム |
具体的な流れ

実際にはどう使うの?

よくある流れはこんな感じ。
- 開発者がGitでコードを変更する
- 変更をcommitする
- Gerritにpushする
- レビュアーがGerrit上で内容を見る
- 問題があればコメントする
- 問題なければ承認する
- 承認後に正式なブランチへ取り込まれる


いきなり本番用の場所に入れるんじゃなくて、Gerritで一回チェックするんだね。

そうそう。
Gerritは、変更を直接取り込む前にレビューする流れを作りやすいんだ。Gerritの説明でも、レビューしやすいように変更差分を表示したり、インラインコメントを付けられることが特徴として紹介されているよ。
GitHubのプルリクエストと似てる?

それってGitHubのプルリクエストと似てない?

かなり似てる。
どちらも「変更をレビューしてから取り込む」という目的は近いね。
ただ、Gerritは特にこういった特徴がある。
- 1つ1つのcommitを細かくレビューする
- パッチセットという単位で修正履歴を追いやすい
- 権限管理や承認ルールを細かく設定しやすい


GitHubはブランチ単位のレビュー、Gerritはcommit単位のレビューが強い、みたいな感じ?

うん、まずはその理解でOKだよ。
Gerritでよく出てくる「パッチセット」とは?

Gerritでは、レビューに出した変更を修正すると、
その修正版が「パッチセット」として管理されるよ。

「パッチセット」?

たとえば、最初にレビューへ出したものがパッチセット1、
指摘を受けて直したものがパッチセット2、
さらに直したものがパッチセット3、というイメージだよ。
つまりGerritでは、
「最初の変更」と「レビュー後に直した変更」を分けて確認しやすいんだ。

どこを直したのか、
レビューの指摘にどう対応したのか、
という流れを追いやすくなるんだね。




Gerritを使うメリット

細かくレビューができるとどんなメリットがあるの?

主なメリットはこんな感じ。

| メリット | 内容 |
|---|---|
| 品質を上げやすい | 他の人がコードを確認してから取り込める |
| ミスを防ぎやすい | バグや書き方の問題に気づきやすい |
| 知識共有になる | レビューを通じてチーム内で学べる |
| 承認ルールを作れる | 「2人以上がOKしたら取り込む」などができる |
| 変更履歴がわかりやすい | 修正のやり取りが残る |
Gerritが向いている開発
Gerritは、特に次のような現場で使われやすいです。

・変更を細かくレビューしたい開発
・承認ルールを厳しくしたい開発
・複数人のレビューを必須にしたい開発
・CI/CDと連携して、自動テスト後に取り込みたい開発
・大規模なチーム開発
まとめ

Gerritは、Gitで作った変更をチームで確認してから取り込むためのコードレビューシステムだよ。

Gitは変更を管理する。
Gerritはその変更をレビューする。

そう、
Git = コードの履歴管理
Gerrit = コードの審査室
という感じだね。
GerritはGitの代わりではなく、Gitを使った開発にレビューの仕組みを追加するもの と考えるとわかりやすいよ。

