ここで紹介するGQLは、一般的に知られているGraphQLではなく、Git Query Languageの略称です。
GQLを使用すると、SQL構文でGitリポジトリをクエリでき、リポジトリ内の全作者のコミット数の統計など、Gitリポジトリの様々な情報を迅速に取得できます。
1. インストールと使用
GitHubから最新版をダウンロードし、ローカルのPATH環境変数が指すフォルダに配置後、gqlにリネーム(ファイル名を変更)すれば直接実行できます。
2. 初回使用
コマンドラインでカレントディレクトリをGit作業ディレクトリに変更し、まず-hでコマンドラインオプションを確認します。オプションを指定しない場合は、対話モードで起動します。
gql -h
GitQL is a SQL like query language to run on local repositories
Usage: gitql [OPTIONS]
Options:
-r, --repos <REPOS> Path for local repositories to run query on
-s, --script <file> Script file contains one or more query
-q, --query <GitQL Query> GitQL query to run on selected repositories
-p, --pagination Enable print result with pagination
-ps, --pagesize Set pagination page size [default: 10]
-o, --output Set output format [render, json, csv]
-a, --analysis Print Query analysis
-e, --editor Enable GitQL Rich Line Editor
-h, --help Print GitQL help
-v, --version Print GitQL Current Version
3. 使用のポイント
show tablesで利用可能なテーブルを照会します。commits、branches、refs、diffs_changes、tags、diffsの6つのテーブルがあります。
c:/git/obsidian-translations[master] # gql
gitql > show tables
╭───────────────╮
│ Tables │
╞═══════════════╡
│ commits │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ branches │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ refs │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ diffs_changes │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ tags │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ diffs │
╰───────────────╯
gitql >
- テーブルの列構造を表示するには
describeを使用します。
gitql > describe commits
╭─────────────────┬──────────╮
│ Field ┆ Type │
╞═════════════════╪══════════╡
│ commit_id ┆ Text │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ title ┆ Text │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ message ┆ Text │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ author_name ┆ Text │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ author_email ┆ Text │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ committer_name ┆ Text │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ committer_email ┆ Text │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ datetime ┆ DateTime │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ parents_count ┆ Int │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ repo ┆ Text │
╰─────────────────┴──────────╯
2025-01-01以降のブランチを検索
select * from branches where updated >= '2025-01-01 12:00:00' order by updated
2025-03-01以降のコミット情報を検索
select title, datetime from commits where datetime >= '2025-03-01 00:00:00' order by datetime
- コミット者ごとのコミット回数統計(コミット回数トップ10)
SELECT author_name, COUNT(author_name) AS commit_num FROM commits GROUP BY author_name, author_email ORDER BY commit_num DESC LIMIT 10
- 特定のコミット者による今年のコミット情報を検索
SELECT title,author_name,datetime FROM commits WHERE LOWER(author_name) = "emisjerry" and datetime>='2025-01-01 00:00:00'
- リポジトリ内で特定の文字列を含むコミットメッセージを検索し、そのコミット者とコミット回数を表示
select author_name,count(author_name) as Count from commits where message like '%zh_TW%' group by author_name
4. 💡 関連リンク
💡 解説記事(繁体中国語): https://jdev.tw/blog/8805/
💡 Explanation article(English): https://quaily.com/jdevtw-en/p/git-query-language-exploring-git-repository-command-line-tool
💡 解説記事(日本語): https://quaily.com/jdevtw-jp/p/git-query-language-exploring-git-repository-command-line-tool
✅GitHub: https://github.com/AmrDeveloper/GQL
✅公式ドキュメント: https://amrdeveloper.github.io/GQL/
✅もう一つのGitQL GitHub: https://github.com/filhodanuvem/gitql
5. チュートリアル動画
##