Gerritでよく使うgit コマンド
Gerritは「1つのコミットを何度も修正して完成度を高める」という運用をするため、GitHubとは少し違うコマンドを多用します。
レビュー依頼のプッシュ
GitHubの git push origin main とは異なり、Gerritでは refs/for/ブランチ名 という特殊な場所にプッシュします。これによりレビュー依頼である事を判断します。
$ git push origin HEAD:refs/for/ブランチ名 Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Writing objects: 100% (3/3), 284 bytes | 284.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0) remote: Processing changes: refs: 1, new: 1, done remote: remote: SUCCESS remote: remote: http://localhost:8080/c/test-repository/+/1 test-comment [NEW] remote: To ssh://localhost:29418/test-repository.git * [new reference] HEAD ->
現在の位置(HEAD)を、ブランチ名向けのレビュー用(refs/for/ブランチ名)として送ります。
このコマンドを実行すると、Gerrit上に新しいChange(レビュー画面)が作成されます。コマンド結果のURLがレビュー画面のリンクになります。(上記例では、http://localhost:8080/c/test-repository/+/1)
コミット
新しくコードを書き、レビューに出す準備をする時に最初のコミットを行います。
$ git add ファイル名 $ git commit -m "メッセージ"
Gerritでは-mオプションを使用したコミットメッセージを書くことは少なくエディタで書くことが多いです。
vimエディタでコミットメッセージを書きたい場合は、以下設定しておけばgit commitでOKです。
$ git config --global core.editor vim
VS Codeでコミットメッセージを書きたい場合は、以下設定しておけばgit commitでOKです。
$ git config --global core.editor "code --wait"
コミット修正
レビューで指摘があった場合、新たにコミットを作るのではなく、今のコミットを書き換えます。
指摘されたコードだけを修正してコミットメッセージは一字一句そのまま変更したくない場合に使います。
$ git add ファイル名 $ git commit --amend --no-edit
--amend をつけると、直前のコミットを破棄して作り直すオプションです。
--no-edit をつけると、Change-Idが含まれた既存のメッセージをそのまま使えます。(コミット上書き、Change-Idは変わらない)
コミット修正後、再び git push origin HEAD:refs/for/ブランチ名 をすると、Gerrit上の既存のレビューが「Patch Set 2」として更新されます。
他メンバーのレビュー取込(同期)
作業中にサーバー側のmasterが進んだ場合、自分のコミットを最新の状態の上に載せ替えます。
$ git fetch origin $ git rebase origin/master
Gerritでは git pull よりも、履歴を綺麗に保つために rebase が推奨されることが多いです。
コミット履歴を一本道(直線)にして、レビューしやすくするためになります。
※git pull を実行すると、裏側では「自分の変更」と「サーバー側の変更」を合体させるためのマージコミット(例:Merge branch ‘master’ of…)が自動で作られてしまいます。
※rebase を使うと、自分の修正を常に「最新のmasterの直後」に置くことができます。
コミット履歴(過去の記録)を表示する
git logでコミット履歴を表示します。
Gerritローカル起動(Windows)
Javaをインストールしておきます。
$ java --version openjdk 21.0.6 2025-01-21 LTS OpenJDK Runtime Environment Corretto-21.0.6.7.1 (build 21.0.6+7-LTS) OpenJDK 64-Bit Server VM Corretto-21.0.6.7.1 (build 21.0.6+7-LTS, mixed mode, sharing)
GerritをWindows環境のローカルで起動します。
こちらからwarをダウンロードします。
C:\gerrit\gerrit-3.13.4.warを配置します。
初期化コマンド実行します。Javaのバージョンが比較的最新の場合は、–add-opens java.base/java.lang=ALL-UNNAMEDを付与します。
$ java --add-opens java.base/java.lang=ALL-UNNAMED ^ -jar gerrit-3.13.4.war init ^ --batch --dev -d c:\gerrit\site [2010-01-01 00:00:00,000] [main] INFO com.google.gerrit.server.config.GerritServerConfigProvider : No c:\gerrit\site\etc\gerrit.config; assuming defaults Generating SSH host key ... rsa... dsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done Initialized C:\gerrit\site Automatic startup not supported on Win32.
初期化コマンドが正常終了したのち、起動します。
$ java --add-opens java.base/java.lang=ALL-UNNAMED ^ -jar gerrit-3.13.4.war daemon -d c:\gerrit\site
これで、`http://localhost:8080`にアクセスすると以下のように起動が確認できます。
commit-msg取得(Windows)
gerritをローカル起動した状態で、curlコマンドでcommit-msgを.gitフォルダ配下にダウンロードします。usernameはtestuserとします。
$ ssh -p 29418 testuser@localhost $ git clone ~~ hoge.git $ cd hoge $ curl -Lo .git\hooks\commit-msg http://localhost:8080/tools/hooks/commit-msg
これでコミットメッセージにChange-Idというユニークな識別子が自動で付与されるようになります。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


