Documentation
short = "g"
deny = ["pf"]
# git help -a
extra_subs = [
  "add",
  "am",
  "annotate",
  "apply",
  "archimport",
  "archive",
  "bisect",
  "blame",
  "branch",
  "bugreport",
  "bundle",
  "cat-file",
  "check-attr",
  "check-ignore",
  "check-mailmap",
  "checkout",
  "checkout-index",
  "check-ref-format",
  "cherry",
  "cherry-pick",
  "citool",
  "clean",
  "clone",
  "column",
  "commit",
  "commit-graph",
  "commit-tree",
  "config",
  "count-objects",
  "credential",
  "credential-cache",
  "credential-netrc",
  "credential-store",
  "cvsexportcommit",
  "cvsimport",
  "cvsserver",
  "describe",
  "diff",
  "diff-files",
  "diff-index",
  "difftool",
  "diff-tree",
  "fast-export",
  "fast-import",
  "fetch",
  "fetch-pack",
  "filter-branch",
  "fmt-merge-msg",
  "for-each-ref",
  "for-each-repo",
  "format-patch",
  "fsck",
  "gc",
  "get-tar-commit-id",
  "gitk",
  "gitweb",
  "grep",
  "gui",
  "hash-object",
  "help",
  "hook",
  "http-backend",
  "imap-send",
  "index-pack",
  "init",
  "instaweb",
  "interpret-trailers",
  "lfs",
  "log",
  "ls-files",
  "ls-remote",
  "ls-tree",
  "mailinfo",
  "mailsplit",
  "maintenance",
  "merge",
  "merge-base",
  "merge-file",
  "merge-index",
  "merge-one-file",
  "mergetool",
  "merge-tree",
  "mktag",
  "mktree",
  "multi-pack-index",
  "mv",
  "name-rev",
  "notes",
  "p4",
  "pack-objects",
  "pack-redundant",
  "pack-refs",
  "patch-id",
  "prune",
  "prune-packed",
  "pull",
  "push",
  "quiltimport",
  "range-diff",
  "read-tree",
  "rebase",
  "reflog",
  "remote",
  "repack",
  "replace",
  "request-pull",
  "rerere",
  "reset",
  "restore",
  "revert",
  "rev-list",
  "rev-parse",
  "rm",
  "send-email",
  "send-pack",
  "sh-i18n",
  "shortlog",
  "show",
  "show-branch",
  "show-index",
  "show-ref",
  "sh-setup",
  "sparse-checkout",
  "stash",
  "status",
  "stripspace",
  "submodule",
  "svn",
  "switch",
  "symbolic-ref",
  "tag",
  "unpack-file",
  "unpack-objects",
  "update-index",
  "update-ref",
  "update-server-info",
  "var",
  "verify-commit",
  "verify-pack",
  "verify-tag",
  "whatchanged",
  "worktree",
  "write-tree",
]
extract_subs = true
extract_flags = true
flags = {}

[subs.add]
short = "a"

[subs.add.flags.--update]
short = "u"
squish = true

[subs.branch]
short = "b"

[subs.branch.flags.--delete]
short = "d"
squish = true

[subs.checkout]
short = "co"

[subs.checkout.flags.-b]
short = "b"
squish = true

[subs.clone]
short = "cl"

[subs.commit]
short = "cm"

[subs.commit.flags.--amend]
short = "a"
squish = true

[subs.commit.flags.--message]
short = "m"
squish = true

[subs.diff]
short = "d"

[subs.diff.flags.--cached]
short = "s"
squish = true

[subs.fetch]
short = "f"

[subs.fetch.flags.--all]
short = "a"
squish = true

[subs.filter-branch]
stop = true

[subs.log]
short = "lg"

[subs.pull]
short = "pl"

[subs.push]
short = "p"

[subs.push.flags.--force-with-lease]
short = "f"
squish = true

[subs.rebase]
short = "rb"

[subs.rebase.flags.--abort]
short = "a"
squish = true

[subs.rebase.flags.--continue]
short = "c"
squish = true

[subs.rebase.flags.--interactive]
short = "i"
squish = true

[subs.remote.flags.--verbose]
short = "v"
squish = true

[subs.reset]
short = "rs"

[subs.reset.flags.--hard]
short = "h"
squish = true

[subs.stash]
short = "sh"
exact_subs = [
  "list",
  "show",
  "drop",
  "pop",
  "apply",
  "branch",
  "push",
  "clear",
  "create",
  "store",
]

[subs.status]
short = "s"

[subs.submodule]
exact_subs = [
  "absorbgitdirs",
  "add",
  "deinit",
  "foreach",
  "init",
  "set-branch",
  "set-url",
  "status",
  "summary",
  "sync",
  "update",
]

[subs.submodule.subs.update.flags.--init]
short = "i"
squish = true

[subs.worktree]
exact_subs = [
  "add",
  "list",
  "move",
  "remove",
]