{
"name": "git",
"description": "The stupid content tracker",
"subcommands": [
{
"name": "checkout",
"aliases": ["co"],
"description": "Switch branches or restore working tree files",
"options": [
{ "names": ["-b"], "description": "Create and checkout a new branch", "takes_arg": true },
{ "names": ["-B"], "description": "Create/reset and checkout a branch", "takes_arg": true },
{ "names": ["-f", "--force"], "description": "Force checkout (throw away local modifications)" },
{ "names": ["-t", "--track"], "description": "Set up tracking mode" },
{ "names": ["--detach"], "description": "Detach HEAD at named commit" }
]
},
{
"name": "commit",
"description": "Record changes to the repository",
"options": [
{ "names": ["-m", "--message"], "description": "Use the given message as the commit message", "takes_arg": true },
{ "names": ["-a", "--all"], "description": "Automatically stage modified and deleted files" },
{ "names": ["--amend"], "description": "Amend the previous commit" },
{ "names": ["-s", "--signoff"], "description": "Add Signed-off-by trailer" },
{ "names": ["--no-edit"], "description": "Use selected commit message without editing" },
{ "names": ["--allow-empty"], "description": "Allow recording an empty commit" }
]
},
{
"name": "push",
"description": "Update remote refs along with associated objects",
"options": [
{ "names": ["-f", "--force"], "description": "Force update remote refs" },
{ "names": ["--force-with-lease"], "description": "Force update if remote matches expected" },
{ "names": ["-u", "--set-upstream"], "description": "Set upstream for git pull/status" },
{ "names": ["--tags"], "description": "Push all tags" },
{ "names": ["-d", "--delete"], "description": "Delete remote branch" },
{ "names": ["--dry-run"], "description": "Do everything except actually send the updates" }
]
},
{
"name": "pull",
"description": "Fetch from and integrate with another repository or branch",
"options": [
{ "names": ["--rebase"], "description": "Rebase the current branch on top of the upstream branch" },
{ "names": ["--no-rebase"], "description": "Merge the upstream branch into the current branch" },
{ "names": ["--ff-only"], "description": "Only fast-forward" },
{ "names": ["--no-ff"], "description": "Create a merge commit even for fast-forward" }
]
},
{
"name": "merge",
"description": "Join two or more development histories together",
"options": [
{ "names": ["--no-ff"], "description": "Create a merge commit even for fast-forward" },
{ "names": ["--ff-only"], "description": "Only fast-forward, fail otherwise" },
{ "names": ["--squash"], "description": "Squash commits into a single commit" },
{ "names": ["--abort"], "description": "Abort the current merge" },
{ "names": ["--continue"], "description": "Continue after resolving conflicts" }
]
},
{
"name": "rebase",
"description": "Reapply commits on top of another base tip",
"options": [
{ "names": ["-i", "--interactive"], "description": "Interactive rebase" },
{ "names": ["--onto"], "description": "Rebase onto a given branch", "takes_arg": true },
{ "names": ["--abort"], "description": "Abort the rebase" },
{ "names": ["--continue"], "description": "Continue after resolving conflicts" },
{ "names": ["--skip"], "description": "Skip the current patch" }
]
},
{
"name": "stash",
"description": "Stash the changes in a dirty working directory",
"subcommands": [
{ "name": "push", "description": "Save your local modifications to a new stash" },
{ "name": "pop", "description": "Apply stashed changes and remove from stash" },
{ "name": "apply", "description": "Apply stashed changes without removing from stash" },
{ "name": "list", "description": "List stashed changes" },
{ "name": "drop", "description": "Remove a single stash entry" },
{ "name": "show", "description": "Show the changes recorded in a stash" },
{ "name": "clear", "description": "Remove all stash entries" }
]
},
{
"name": "branch",
"description": "List, create, or delete branches",
"options": [
{ "names": ["-d", "--delete"], "description": "Delete a branch" },
{ "names": ["-D"], "description": "Force delete a branch" },
{ "names": ["-m", "--move"], "description": "Rename a branch" },
{ "names": ["-a", "--all"], "description": "List both remote-tracking and local branches" },
{ "names": ["-r", "--remotes"], "description": "List remote-tracking branches" },
{ "names": ["-v", "--verbose"], "description": "Show sha1 and commit subject line" }
]
},
{
"name": "log",
"description": "Show commit logs",
"options": [
{ "names": ["--oneline"], "description": "Show each commit on a single line" },
{ "names": ["--graph"], "description": "Draw a text-based graphical representation" },
{ "names": ["-n", "--max-count"], "description": "Limit number of commits", "takes_arg": true },
{ "names": ["--all"], "description": "Show all refs" },
{ "names": ["--stat"], "description": "Show diffstat" },
{ "names": ["-p", "--patch"], "description": "Show patch" }
]
},
{
"name": "diff",
"description": "Show changes between commits, commit and working tree, etc",
"options": [
{ "names": ["--staged", "--cached"], "description": "Show changes staged for commit" },
{ "names": ["--stat"], "description": "Show diffstat instead of patch" },
{ "names": ["--name-only"], "description": "Show only names of changed files" },
{ "names": ["--name-status"], "description": "Show names and status of changed files" }
]
},
{
"name": "status",
"description": "Show the working tree status",
"options": [
{ "names": ["-s", "--short"], "description": "Give output in short format" },
{ "names": ["-b", "--branch"], "description": "Show branch and tracking info" },
{ "names": ["--porcelain"], "description": "Give output in machine-readable format" }
]
},
{
"name": "add",
"description": "Add file contents to the index",
"options": [
{ "names": ["-A", "--all"], "description": "Add all tracked and untracked files" },
{ "names": ["-p", "--patch"], "description": "Interactively choose hunks to stage" },
{ "names": ["-u", "--update"], "description": "Only stage modified and deleted files" },
{ "names": ["-n", "--dry-run"], "description": "Don't actually add, just show what would be added" }
]
},
{
"name": "clone",
"description": "Clone a repository into a new directory",
"options": [
{ "names": ["--depth"], "description": "Create a shallow clone", "takes_arg": true },
{ "names": ["-b", "--branch"], "description": "Checkout this branch instead of HEAD", "takes_arg": true },
{ "names": ["--bare"], "description": "Make a bare Git repository" },
{ "names": ["--recurse-submodules"], "description": "Initialize submodules in the clone" },
{ "names": ["--single-branch"], "description": "Clone only the history leading to the tip of a single branch" }
]
},
{
"name": "fetch",
"description": "Download objects and refs from another repository",
"options": [
{ "names": ["--all"], "description": "Fetch all remotes" },
{ "names": ["--prune"], "description": "Remove remote-tracking references that no longer exist" },
{ "names": ["--tags"], "description": "Fetch all tags" },
{ "names": ["--depth"], "description": "Limit fetching to specified depth", "takes_arg": true }
]
},
{
"name": "reset",
"description": "Reset current HEAD to the specified state",
"options": [
{ "names": ["--soft"], "description": "Keep changes staged" },
{ "names": ["--mixed"], "description": "Unstage changes but keep in working tree (default)" },
{ "names": ["--hard"], "description": "Discard all changes" }
]
},
{
"name": "cherry-pick",
"description": "Apply the changes introduced by some existing commits",
"options": [
{ "names": ["-n", "--no-commit"], "description": "Apply changes without creating a commit" },
{ "names": ["--abort"], "description": "Cancel the cherry-pick" },
{ "names": ["--continue"], "description": "Continue after resolving conflicts" }
]
},
{
"name": "tag",
"description": "Create, list, delete or verify a tag object",
"options": [
{ "names": ["-a", "--annotate"], "description": "Make an annotated tag" },
{ "names": ["-d", "--delete"], "description": "Delete a tag" },
{ "names": ["-l", "--list"], "description": "List tags" },
{ "names": ["-m", "--message"], "description": "Tag message", "takes_arg": true }
]
},
{
"name": "remote",
"description": "Manage set of tracked repositories",
"subcommands": [
{ "name": "add", "description": "Add a remote" },
{ "name": "remove", "description": "Remove a remote" },
{ "name": "rename", "description": "Rename a remote" },
{ "name": "show", "description": "Show information about a remote" },
{ "name": "set-url", "description": "Change URLs for the remote" }
],
"options": [
{ "names": ["-v", "--verbose"], "description": "Show remote URL after name" }
]
},
{
"name": "init",
"description": "Create an empty Git repository",
"options": [
{ "names": ["--bare"], "description": "Create a bare repository" },
{ "names": ["-b", "--initial-branch"], "description": "Override the default branch name", "takes_arg": true }
]
},
{
"name": "switch",
"description": "Switch branches",
"options": [
{ "names": ["-c", "--create"], "description": "Create and switch to a new branch", "takes_arg": true },
{ "names": ["-C", "--force-create"], "description": "Force create and switch", "takes_arg": true },
{ "names": ["-d", "--detach"], "description": "Switch to a commit in detached HEAD state" }
]
},
{
"name": "restore",
"description": "Restore working tree files",
"options": [
{ "names": ["--staged"], "description": "Restore the index (unstage)" },
{ "names": ["-s", "--source"], "description": "Restore from given tree", "takes_arg": true }
]
}
],
"options": [
{ "names": ["--version"], "description": "Print the Git version" },
{ "names": ["--help"], "description": "Print help" },
{ "names": ["-C"], "description": "Run as if started in the given path", "takes_arg": true }
]
}