# Git Snippets for Espanso matches: # === BASIC COMMANDS === # Git init - trigger: "}ginit" replace: "git init" # Git clone - trigger: "}gclone" replace: "git clone $1$" # Git status - trigger: "}gst" replace: "git status" # Git add - trigger: "}ga" #replace: "git add $1$" vars: - name: "dot" type: "choice" params: values: - ". " - "" - name: "file" type: "choice" params: values: - "$|$" - " " replace: "git add {{dot}}{{file}}" # Git commit - trigger: "}gcs" replace: 'git commit -m "$|$"' # Git commit with amend - trigger: "}gca" replace: 'git commit --amend -m "$|$"' # Git commit all - trigger: "}gcaa" replace: 'git commit -am "$|$"' # Git push - trigger: "}gp" #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" replace: "git push {{option}} {{remote_branch}}" # Git pull - trigger: "}gl" #replace: "git pull $1$ $2$" vars: - name: "option" type: "choice" params: values: - "" - "--rebase" - name: "remote_branch" type: "choice" params: values: - "" - "origin main" - "origin master" replace: "git pull {{option}} {{remote_branch}}" # Git fetch - trigger: "}gf" #replace: "git fetch $1$" vars: - name: "remote" type: "choice" params: values: - "" - "origin" - "--all" replace: "git fetch {{remote}}" # Git log - trigger: "}glg" replace: "git log --oneline --graph --all" # Git diff - trigger: "}gd" #replace: "git diff $1$" vars: - name: "option" type: "choice" params: values: - "" - "--staged" - "HEAD~1" replace: "git diff {{option}}" # Git checkout - trigger: "}gco" #replace: "git checkout $1$" vars: - name: "what" type: "choice" params: values: - "" - "-b " - "-- " - name: "target" type: "choice" params: values: - "$|$" - "main" - "master" - "develop" replace: "git checkout {{what}}{{target}}" # Git branch - trigger: "}gb" #replace: "git branch $1$" vars: - name: "option" type: "choice" params: values: - "" - "-d " - "-D " - "-a" - "-r" - name: "branch" type: "choice" params: values: - "$|$" - "feature/" - "bugfix/" - "hotfix/" replace: "git branch {{option}}{{branch}}" # Git merge - trigger: "}gm" #replace: "git merge $1$" vars: - name: "option" type: "choice" params: values: - "" - "--no-ff " - "--squash " - "--abort" - name: "branch" type: "choice" params: values: - "$|$" - "main" - "master" - "develop" replace: "git merge {{option}}{{branch}}" # Git rebase - trigger: "}gr" #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" replace: "git rebase {{option}}{{target}}" # Git stash - trigger: "}gstash" #replace: "git stash $1$" vars: - name: "option" type: "choice" params: values: - "" - 'push -m "$|$"' - "pop" - "list" - "drop" replace: "git stash {{option}}" # Git remote - trigger: "}gr" #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: "}greset" #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: "}gclean" #replace: "git clean -fd $1$" vars: - name: "dry" type: "choice" params: values: - "" - "-n" replace: "git clean -fd{{dry}}" # Git show - trigger: "}gshow" #replace: "git show $1$" vars: - name: "ref" type: "choice" params: values: - "HEAD" - "HEAD~1" - "$|$" - "" replace: "git show {{ref}}" # Git cherry-pick - trigger: "}gcp" #replace: "git cherry-pick $1$" vars: - name: "option" type: "choice" params: values: - "" - "-x " - "--continue" - "--abort" - name: "commit" type: "choice" params: values: - "$|$" - "" - "HEAD~1" replace: "git cherry-pick {{option}}{{commit}}" # Git revert - trigger: "}grev" #replace: "git revert $1$" vars: - name: "commit" type: "choice" params: values: - "HEAD" - "HEAD~1" - "$|$" - "" replace: "git revert {{commit}}" # Git bisect - trigger: "}gbisect" #replace: "git bisect $1$" vars: - name: "action" type: "choice" params: values: - "start" - "good" - "bad" - "reset" - "log" replace: "git bisect {{action}}" # Git blame - trigger: "}gblame" #replace: "git blame $1$" vars: - name: "file" type: "choice" params: values: - "$|$" - "" replace: "git blame {{file}}" # Git reflog - trigger: "}grl" #replace: "git reflog" replace: "git reflog" # Git config - trigger: "}gconf" #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: "}gcc" 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: "}gfix" replace: "fixup! $|$" # Squash commit - trigger: "}gsquash" replace: "squash! $|$" # === BRANCH NAMING CONVENTIONS === # Feature branch - trigger: "}gbf" replace: "feature/$|$-{{mydate}}" vars: - name: "mydate" type: "date" params: format: "%Y-%m-%d" # Bugfix branch - trigger: "}gbb" replace: "bugfix/$|$-{{mydate}}" vars: - name: "mydate" type: "date" params: format: "%Y-%m-%d" # Hotfix branch - trigger: "}gbh" replace: "hotfix/$|$-{{mydate}}" vars: - name: "mydate" type: "date" params: format: "%Y-%m-%d" # Release branch - trigger: "}gbr" 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: "}gdc" replace: "git checkout -- $1$" vars: - name: "file" type: "choice" params: values: - "." - "$|$" - "" # Undo last commit (keep changes) - trigger: "}gundo" replace: "git reset --soft HEAD~1" # Undo last commit (discard changes) - trigger: "}gundohard" replace: "git reset --hard HEAD~1" # Remove untracked files (CAREFUL!) - trigger: "}grmuntracked" replace: "git clean -fd" # See what branch you're on - trigger: "}gcurrbranch" replace: "git branch --show-current" # List all branches with last commit - trigger: "}gbrl" replace: "git branch -vva" # Find deleted branches - trigger: "}gbrd" replace: "git branch --merged | egrep -v \"(^\\*|main|master|develop)\"" # === GIT IGNORE === # Add to .gitignore - trigger: "gignore" replace: 'echo "$1$" >> .gitignore' # Common .gitignore entries - trigger: "ignode" replace: "node_modules/\n.env\nnpm-debug.log" - trigger: "igpython" replace: "__pycache__/\n*.pyc\n.env\nvenv/\n.venv/\n*.egg-info/" - trigger: "igidea" replace: ".idea/\n*.iml\n.vscode/\n.DS_Store" - trigger: "igbuild" replace: "dist/\nbuild/\n*.o\n*.obj\n*.exe\n*.dll\n*.so\n*.dylib"