filhodanuvem/gitql
đ A git query language
{ "createdAt": "2014-02-17T02:19:11Z", "defaultBranch": "main", "description": "đ A git query language", "fullName": "filhodanuvem/gitql", "homepage": "", "language": "Go", "name": "gitql", "pushedAt": "2024-10-14T14:32:41Z", "stargazersCount": 6304, "topics": [ "git", "go", "hacktoberfest" ], "updatedAt": "2025-11-06T23:01:47Z", "url": "https://github.com/filhodanuvem/gitql"}Gitql is a Git query language.
In a repository pathâŚ
![how to use]!(howtouse.gif)
See more here
Reading the code
Section titled âReading the codeââ ď¸ Gitql is my first golang project. If you are a beginner looking for using the project as a guideline (how to organise or make an idiomatic go code), I recommend you polyglot instead.
Requirements
Section titled âRequirementsâ- Go 1.16+
How to install
Section titled âHow to installâYou can access the releases page and just grab the binary. If you want to compile itself just run go build ..
Examples
Section titled âExamplesâgitql "your query"
or
git ql "your query"
As an example, this is the commits table:
| commits |
|---|
| author |
| author_email |
| committer |
| committer_email |
| hash |
| date |
| message |
| full_message |
(see more tables [here]!(tables.md))
Example Commands
Section titled âExample Commandsâselect hash, author, message from commits limit 3select hash, message from commits where 'hell' in full_message or 'Fuck' in full_messageselect hash, message, author_email from commits where author = 'cloudson'select date, message from commits where date < '2014-04-10'select message from commits where 'hell' in message order by date ascselect distinct author from commits where date < '2020-01-01'
Questions?
Section titled âQuestions?âgitql or open an issue
Notes:
- Gitql doesnât want to kill
git log- it was created just for science! :sweat_smile: - Itâs read-only - no deleting, inserting, or updating tables or commits. :stuck_out_tongue_closed_eyes:
- The default limit is 10 rows.
- Itâs inspired by textql.
- Gitql is a compiler/interpreter instead of just read a sqlite database with all commits, tags, etc. because we would need to sync the tables every time before run sql and we would have sqlite bases for each repository. :neutral_face: