A thin, opinionated CLI wrapper around GitHub's API for pull request workflows.
gh is great. curl is great. Remembering the exact API endpoint, headers, and JSON shape every time you want to fetch review comments... not so great.
gito gives you:
- One interface, two backends. Has
gh? Usesgh. Doesn't? Falls back tocurl+GITHUB_PAT. You don't think about it. - Human-readable review comments. No more piping JSON through
jqgymnastics. Comments come out formatted and ready to read. - Less typing.
gito pull comments 10beatsgh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /repos/you/your-repo/pulls/10/comments | jq '.[] | {author: .user.login, body: .body, diff: .diff_hunk}'any day.
go install github.com/pixincreate/gito@latestgit clone https://github.com/pixincreate/gito.git
cd gito
make build
# binary lands in dist/gitogh auth loginDone. gito will detect it automatically.
export GITHUB_PAT=ghp_your_token_heregh installed and authenticated?
yes --> use gh
no --> print yellow warning, try curl
GITHUB_PAT set?
yes --> use curl
no --> error, tell you what to do
You can skip auto-detection entirely:
gito --backend=gh pr list
gito --backend=curl pr listEvery command supports --repo owner/repo. Skip it and gito reads your git remote.
# Create
gito pr create "Fix the thing" --base main --head fix/thing --label bug --assignee you
# List (default: open, limit 30)
gito pr list
gito pr list --state closed --limit 10
# View details
gito pr view 42
# Merge
gito pr merge 42
gito pr merge 42 --method squash --delete-branch
# Close without merging
gito pr close 42
# Raw diff
gito pr diff 42
# Who's been asked to review
gito pr reviewers 42This is the main reason gito exists.
# Fetch all review comments on a PR
gito pull comments 10
# Save to file
gito pull comments 10 --output comments.txtOutput looks like this:
Author: Copilot
PR Number: 10
Diff: @@ -33,13 +33,26 @@ pub use convert::{ConvertOptions, Format, convert, convert_with_options};
Review comment: `is_jsonc_path()` currently treats the entire string as the extension...
URL: https://github.com/user-name/repo-name/pull/10#discussion_r2896771811
Created At: 2026-03-06T16:42:47Z
Author Association: CONTRIBUTOR
--------------------------------------------------------------------------------
Author: Copilot
PR Number: 10
Diff: @@ -0,0 +1,421 @@
Review comment: The tests validate `is_jsonc_path("file") == false`, but they don't cover...
URL: https://github.com/user-name/repo-name/pull/10#discussion_r2896771824
Created At: 2026-03-06T16:42:47Z
Author Association: CONTRIBUTOR
--------------------------------------------------------------------------------
No JSON. No jq. Just text you can actually read.
gito pull replies 10 2896771811 --body "Good catch, fixed."All commands figure out owner/repo from your git remote when you don't pass --repo. If you're in a repo directory, just run the command.
cd ~/code/my-project
gito pr list # knows it's your-username/my-projectgito --help
gito pr --help
gito pr create --help
gito pull --help
gito pull comments --help