Git, but lazier 🦥
Commit templates + short commands = less typing, more coding
$ git add src/auth.ts tests/auth.test.ts
$ git commit -m "[TASK-456] feat(auth): add OAuth2 support"
$ git push $ guito c 456 f "add OAuth2 support" -p More productive, less tedious
Stop wasting time on repetitive Git commands. Let preguito handle the boring stuff.
Customizable Templates
Configure once, use forever. Jira, Linear, or any commit pattern you need.
Short Commands
guito c = commit, guito ap = amend + push. 70% less typing, same results.
Zero Config
Sensible defaults out-of-the-box. Start using it immediately without setup.
Highly Configurable
Per-project or global settings. TypeScript API for advanced automation.
Claude Code Skill
Official Claude Code skill. Claude reads your .preguitorc and crafts commits with /guito-commit.
Get started in 10 seconds
Choose your preferred installation method
Recommended for Node.js users
npm install -g preguito For Debian/Ubuntu systems
wget https://github.com/jacodoisdois/preguito/releases/latest/download/preguito_0.2.3_amd64.deb
sudo dpkg -i preguito_0.2.3_amd64.deb Standalone binary (no Node.js required)
wget https://github.com/jacodoisdois/preguito/releases/latest/download/guito
chmod +x guito
sudo mv guito /usr/local/bin/ For AI agent users
npx skills add jacodoisdois/preguito-skill -g Teaches your AI agent the .preguitorc config, shortcodes and enables /guito-commit
Documentation
Complete command reference and usage examples. No GitHub required.
Command Reference
| Command | Alias | Description |
|---|---|---|
guito c [id] [codes] "msg" | commit | Templated commit with auto-stage |
guito cf <hash> | — | Create a fixup commit |
guito ap | — | Amend + force push |
guito apl | — | Amend + force push with lease |
guito u [count] | undo | Undo last N commits (soft reset) |
guito p | push | Simple push (git push) |
guito pu | — | Push with --set-upstream |
guito r <branch> | rebase | Quick rebase on branch |
guito re <hash> | — | Edit rebase at commit |
guito ri <count> | — | Interactive rebase last N commits |
guito sw <branch> | switch | Switch/create branch (-n to create) |
guito st | — | Stash changes |
guito stp | — | Pop latest stash |
guito s | status | Short status |
guito l [count] | log | Compact log (default: 10) |
guito f <keyword> | find | Search commits by message |
guito t <tag> | tag | Commits since/from a tag |
guito i | init | Setup wizard |
guito cfg | config | View configuration |
Shortcodes Reference
Types
| Key | Label |
|---|---|
f | feat |
x | fix |
c | chore |
t | test |
r | refactor |
d | docs |
Environments
| Key | Label |
|---|---|
p | prd |
u | uat |
d | dev |
s | stg |
l | local |
Use shortcodes in commit commands: guito c 123 fx "add feature" → f = feat, x = (no environment)
Common Workflows
Start a new feature
guito sw -n feature/login # Create branch
# ... make changes ...
guito c 42 f "add login" -p # Commit + push Quick fix on current branch
# ... fix the bug ...
guito c 99 x "fix timeout" -p # x = fix, push immediately Amend last commit
# ... make more changes ...
guito apl # Amend + force push (safe) Rebase before PR
guito r main # Pull main, rebase on top
guito pu # Push with upstream Clean up commit history
guito ri 5 # Interactive rebase last 5 commits
# or create fixup commits:
guito cf abc123 -f # Fixup + force push Configuration Examples
Minimal Setup
Simple template with types only
{
"template": "{{type}}: <message>",
"features": {
"cardId": false,
"type": true,
"environment": false
},
"types": [
{ "key": "f", "label": "feat" },
{ "key": "x", "label": "fix" },
{ "key": "c", "label": "chore" }
]
} Team Setup (Jira)
Full template with Jira ticket prefix
{
"template": "[PAYMENTS-{{card_id}}] {{type}}({{environment}}): <message>",
"features": {
"cardId": true,
"type": true,
"environment": true
},
"types": [
{ "key": "f", "label": "feat" },
{ "key": "x", "label": "fix" }
],
"environments": [
{ "key": "p", "label": "prd" },
{ "key": "u", "label": "uat" }
],
"defaults": {
"prefix": "PAYMENTS"
}
} Advanced Setup
Optional environment variables
{
"template": "[{{prefix}}-{{card_id}}] {{type}}{{environment}}: <message>",
"features": {
"cardId": true,
"type": true,
"environment": true
},
"types": [
{ "key": "f", "label": "feat" },
{ "key": "x", "label": "fix" },
{ "key": "c", "label": "chore" },
{ "key": "t", "label": "test" },
{ "key": "r", "label": "refactor" },
{ "key": "d", "label": "docs" }
],
"environments": [
{ "key": "p", "label": "(prd)" },
{ "key": "u", "label": "(uat)" },
{ "key": "d", "label": "(dev)" }
],
"defaults": {
"prefix": "CHECKOUT"
}
}
Save as .preguitorc or .preguitorc.json in your project root or ~/.config/preguito/config.json globally.
Your first commit
Three simple steps to start being lazy
Install
npm install -g preguito
Configure
guito init (interactive wizard)
Use
guito c 123 f "your message"