espanso/match/git.yml
2026-05-20 08:54:23 +08:00

497 lines
10 KiB
YAML

# Git Snippets for Espanso
matches:
# === BASIC COMMANDS ===
# Git init
- trigger: "}giti"
replace: "git init"
# Git clone
- trigger: "}gitcl"
replace: "git clone $1$"
# Git status
- trigger: "}gits"
replace: "git status"
# Git add
- trigger: "}gita"
# replace: "git add $1$"
vars:
- name: "dot"
type: "choice"
params:
values:
- ". "
- ""
- name: "file"
type: "choice"
params:
values:
- "$|$"
- " <filename>"
replace: "git add {{dot}}{{file}}"
# Git commit
- trigger: "}gitc"
replace: 'git commit -m "$|$"'
# Git commit with amend
- trigger: "}gitcam"
replace: 'git commit --amend -m "$|$"'
# Git commit all
- trigger: "}gitcal"
replace: 'git commit -am "$|$"'
# Git push
- trigger: "}gitp"
#replace: "git push $1$ $2$"
vars:
- name: "option"
type: "choice"
params:
values:
- ""
- "--force"
- "--tags"
- name: "remote_branch"
type: "choice"
params:
values:
- ""
- "origin main"
- "origin master"
- "origin HEAD"
- "origin development"
replace: "git push {{option}} {{remote_branch}}"
# Git pull
- trigger: "}gitpl"
#replace: "git pull $1$ $2$"
vars:
- name: "option"
type: "choice"
params:
values:
- ""
- "--rebase"
- name: "remote_branch"
type: "choice"
params:
values:
- ""
- "origin main"
- "origin master"
- "origin HEAD"
- "origin development"
replace: "git pull {{option}} {{remote_branch}}"
# Git fetch
- trigger: "}gitf"
# replace: "git fetch $1$"
vars:
- name: "remote"
type: "choice"
params:
values:
- ""
- "origin"
- "--all"
replace: "git fetch {{remote}}"
# Git log
- trigger: "}gitlg"
replace: "git log --oneline --graph --all"
# Git diff
- trigger: "}gitdf"
#replace: "git diff $1$"
vars:
- name: "option"
type: "choice"
params:
values:
- ""
- "--staged"
- "HEAD~1"
replace: "git diff {{option}}"
# Git checkout
- trigger: "}gitco"
#replace: "git checkout $1$"
vars:
- name: "what"
type: "choice"
params:
values:
- ""
- "-b "
- "-- "
- name: "target"
type: "choice"
params:
values:
- "$|$"
- "main"
- "master"
- "development"
replace: "git checkout {{what}}{{target}}"
# Git branch
- trigger: "}gitb"
#replace: "git branch $1$"
vars:
- name: "option"
type: "choice"
params:
values:
- ""
- "-d "
- "-D "
- "-a"
- "-r"
- name: "branch"
type: "choice"
params:
values:
- "$|$"
- "feature/"
- "bugfix/"
- "hotfix/"
- "chore/"
- "test/"
replace: "git branch {{option}}{{branch}}"
# Git merge
- trigger: "}gitm"
#replace: "git merge $1$"
vars:
- name: "option"
type: "choice"
params:
values:
- ""
- "--no-ff "
- "--squash "
- "--abort"
- name: "branch"
type: "choice"
params:
values:
- "$|$"
- "main"
- "master"
- "development"
replace: "git merge {{option}}{{branch}}"
# Git rebase
- trigger: "}gitr"
#replace: "git rebase $1$"
vars:
- name: "option"
type: "choice"
params:
values:
- ""
- "-i "
- "--abort"
- "--continue"
- "--skip"
- name: "target"
type: "choice"
params:
values:
- "$|$"
- "main"
- "master"
- "HEAD~3"
- "development"
- "staging"
replace: "git rebase {{option}}{{target}}"
# Git stash
- trigger: "}gitsah"
#replace: "git stash $1$"
vars:
- name: "option"
type: "choice"
params:
values:
- ""
- 'push -m "$|$"'
- "pop"
- "list"
- "drop"
- "apply"
- "--include-untracked"
replace: "git stash {{option}}"
# Git remote
- trigger: "}gitr"
#replace: "git remote $1$"
vars:
- name: "option"
type: "choice"
params:
values:
- "-v"
- "add origin "
- "remove "
- name: "url"
type: "choice"
params:
values:
- "$|$"
- "https://github.com/user/repo.git"
replace: "git remote {{option}}{{url}}"
# Git reset
- trigger: "}gitrst"
#replace: "git reset $1$ $2$"
vars:
- name: "mode"
type: "choice"
params:
values:
- "--soft "
- "--hard "
- ""
- name: "target"
type: "choice"
params:
values:
- "HEAD~1"
- "HEAD~2"
- "HEAD~3"
- "$|$"
replace: "git reset {{mode}}{{target}}"
# Git clean
- trigger: "}gitcln"
#replace: "git clean -fd $1$"
vars:
- name: "dry"
type: "choice"
params:
values:
- ""
- "-n"
replace: "git clean -fd{{dry}}"
# Git show
- trigger: "}gitshow"
#replace: "git show $1$"
vars:
- name: "ref"
type: "choice"
params:
values:
- "HEAD"
- "HEAD~1"
- "$|$"
- "<commit-hash>"
replace: "git show {{ref}}"
# Git cherry-pick
- trigger: "}gitcp"
#replace: "git cherry-pick $1$"
vars:
- name: "option"
type: "choice"
params:
values:
- ""
- "-x "
- "--continue"
- "--abort"
- name: "commit"
type: "choice"
params:
values:
- "$|$"
- "<commit-hash>"
- "HEAD~1"
replace: "git cherry-pick {{option}}{{commit}}"
# Git revert
- trigger: "}gitrev"
#replace: "git revert $1$"
vars:
- name: "commit"
type: "choice"
params:
values:
- "HEAD"
- "HEAD~1"
- "$|$"
- "<commit-hash>"
replace: "git revert {{commit}}"
# Git bisect
- trigger: "}gitbst"
#replace: "git bisect $1$"
vars:
- name: "action"
type: "choice"
params:
values:
- "start"
- "good"
- "bad"
- "reset"
- "log"
replace: "git bisect {{action}}"
# Git blame
- trigger: "}gitblame"
#replace: "git blame $1$"
vars:
- name: "file"
type: "choice"
params:
values:
- "$|$"
- "<filename>"
replace: "git blame {{file}}"
# Git reflog
- trigger: "}gitrl"
#replace: "git reflog"
replace: "git reflog"
# Git config
- trigger: "}gitconf"
#replace: "git config --global $1$ $2$"
vars:
- name: "key"
type: "choice"
params:
values:
- "user.name"
- "user.email"
- "core.editor"
- "init.defaultBranch"
- name: "value"
type: "choice"
params:
values:
- "$|$"
- "Your Name"
- "your.email@example.com"
- "vim"
- "main"
replace: 'git config --global {{key}} "{{value}}"'
# === COMMIT MESSAGE CONVENTIONS ===
# Conventional Commits
- trigger: "}gitcc"
vars:
- name: "type"
type: "choice"
params:
values:
- "feat"
- "fix"
- "docs"
- "style"
- "refactor"
- "perf"
- "test"
- "chore"
- "revert"
- name: "scope"
type: "choice"
params:
values:
- ""
- "(auth)"
- "(api)"
- "(db)"
- "(ui)"
- "(cli)"
replace: "{{type}}{{scope}}: "
# Fix typo in commit
- trigger: "}gitfix"
replace: "fixup! $|$"
# Squash commit
- trigger: "}gitsquash"
replace: "squash! $|$"
# === BRANCH NAMING CONVENTIONS ===
# Release branch
- trigger: "}gitbr"
replace: "release/v$1$.$2$.$3$"
vars:
- name: "major"
type: "choice"
params:
values: ["0", "1", "2"]
- name: "minor"
type: "choice"
params:
values: ["0", "1", "2"]
- name: "patch"
type: "choice"
params:
values: ["0", "1", "2"]
# === TROUBLESHOOTING ===
# Discard local changes (CAREFUL!)
- trigger: "}gitdc"
replace: "git checkout -- $1$"
vars:
- name: "file"
type: "choice"
params:
values:
- "."
- "$|$"
- "<filename>"
# Undo last commit (keep changes)
- trigger: "}gitundo"
replace: "git reset --soft HEAD~1"
# Undo last commit (discard changes)
- trigger: "}gitundohard"
replace: "git reset --hard HEAD~1"
# Remove untracked files (CAREFUL!)
- trigger: "}gitrmuntracked"
replace: "git clean -fd"
# See what branch you're on
- trigger: "}gitcurrbranch"
replace: "git branch --show-current"
# List all branches with last commit
- trigger: "}gitbrl"
replace: "git branch -vva"
# Find deleted branches
- trigger: "}gitbrd"
replace: "git branch --merged | egrep -v \"(^\\*|main|master|develop)\""
# === GIT IGNORE ===
# Add to .gitignore
- trigger: "}gitignore"
replace: 'echo "$1$" >> .gitignore'
# Common .gitignore entries
- trigger: "}gitignode"
replace: "node_modules/\n.env\nnpm-debug.log"
- trigger: "}gitpython"
replace: "__pycache__/\n*.pyc\n.env\nvenv/\n.venv/\n*.egg-info/"
- trigger: "}gitidea"
replace: ".idea/\n*.iml\n.vscode/\n.DS_Store"
- trigger: "}gitbuild"
replace: "dist/\nbuild/\n*.o\n*.obj\n*.exe\n*.dll\n*.so\n*.dylib"