{
    "$schema": "https://opencli.org/draft.json",
    "opencli": "0.1",
    "command": {
        "name": "git",
        "options": [
            {
                "name": "--version",
                "aliases": [
                    "-v"
                ],
                "description": "Prints the Git suite version that the git program came from."
            },
            {
                "name": "--help",
                "aliases": [
                    "-h"
                ],
                "description": "Prints the synopsis and a list of the most commonly used commands. If the option --all or -a is given then all available commands are printed. If a Git command is named this option will bring up the manual page for that command.",
                "recursive": true
            },
            {
                "name": "-C",
                "arguments": [
                    {
                        "name": "path",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "description": "Run as if git was started in <path> instead of the current working directory. When multiple -C options are given, each subsequent non-absolute -C <path> is interpreted relative to the preceding -C <path>. If <path> is present but empty, e.g. -C \"\", then the current working directory is left unchanged."
            },
            {
                "name": "-c",
                "arguments": [
                    {
                        "name": "name=value",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "description": "Pass a configuration parameter to the command. The value given will override values from configuration files. The <name> is expected in the same format as listed by git config (subkeys separated by dots)."
            },
            {
                "name": "--config-env",
                "arguments": [
                    {
                        "name": "name=envvar",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "description": "Like -c <name>=<value>, give configuration variable <name> a value, where <envvar> is the name of an environment variable from which to retrieve the value. Unlike -c there is no shortcut for directly setting the value to an empty string, instead the environment variable itself must be set to the empty string. It is an error if the <envvar> does not exist in the environment. <envvar> may not contain an equals sign to avoid ambiguity with <name> containing one."
            },
            {
                "name": "--exec-path",
                "arguments": [
                    {
                        "name": "path",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "description": "Path to wherever your core Git programs are installed. This can also be controlled by setting the GIT_EXEC_PATH environment variable. If no path is given, git will print the current setting and then exit."
            },
            {
                "name": "--html-path",
                "description": "Print the path, without trailing slash, where Git's HTML documentation is installed and exit."
            },
            {
                "name": "--man-path",
                "description": "Print the manpath (see man(1)) for the man pages for this version of Git and exit."
            },
            {
                "name": "--info-path",
                "description": "Print the path where the Info files documenting this version of Git are installed and exit."
            },
            {
                "name": "--paginate",
                "aliases": [
                    "-p"
                ],
                "description": "Pipe all output into less (or if set, $PAGER) if standard output is a terminal. This overrides the pager.<cmd> configuration options (see the \"Configuration Mechanism\" section below)."
            },
            {
                "name": "--no-pager",
                "aliases": [
                    "-P"
                ],
                "description": "Do not pipe Git output into a pager."
            },
            {
                "name": "--git-dir",
                "arguments": [
                    {
                        "name": "path",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "description": "Set the path to the repository (\".git\" directory). This can also be controlled by setting the GIT_DIR environment variable. It can be an absolute path or relative path to current working directory."
            },
            {
                "name": "--work-tree",
                "arguments": [
                    {
                        "name": "path",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "description": "Set the path to the working tree. It can be an absolute path or a path relative to the current working directory. This can also be controlled by setting the GIT_WORK_TREE environment variable and the core.worktree configuration variable (see core.worktree in git-config(1) for a more detailed discussion)."
            },
            {
                "name": "--namespace",
                "arguments": [
                    {
                        "name": "path",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "description": "Set the Git namespace. See gitnamespaces(7) for more details. Equivalent to setting the GIT_NAMESPACE environment variable."
            },
            {
                "name": "--bare",
                "description": "Treat the repository as a bare repository. If GIT_DIR environment is not set, it is set to the current working directory."
            },
            {
                "name": "--no-replace-objects",
                "description": "Do not use replacement refs to replace Git objects. This is equivalent to exporting the GIT_NO_REPLACE_OBJECTS environment variable with any value. See git-replace(1) for more information.",
                "metadata": [
                    {
                        "name": "x-negatable",
                        "value": true
                    }
                ]
            },
            {
                "name": "--no-lazy-fetch",
                "description": "Do not fetch missing objects from the promisor remote on demand. Useful together with git cat-file -e <object> to see if the object is locally available. This is equivalent to setting the GIT_NO_LAZY_FETCH environment variable to 1.",
                "metadata": [
                    {
                        "name": "x-negatable",
                        "value": true
                    }
                ]
            },
            {
                "name": "--no-optional-locks",
                "description": "Do not perform optional operations that require locks. This is equivalent to setting the GIT_OPTIONAL_LOCKS to 0.",
                "metadata": [
                    {
                        "name": "x-negatable",
                        "value": true
                    }
                ]
            },
            {
                "name": "--no-advice",
                "description": "Disable all advice hints from being printed.",
                "metadata": [
                    {
                        "name": "x-negatable",
                        "value": true
                    }
                ]
            },
            {
                "name": "--literal-pathspecs",
                "description": "Treat pathspecs literally (i.e. no globbing, no pathspec magic). This is equivalent to setting the GIT_LITERAL_PATHSPECS environment variable to 1."
            },
            {
                "name": "--glob-pathspecs",
                "description": "Add \"glob\" magic to all pathspec. This is equivalent to setting the GIT_GLOB_PATHSPECS environment variable to 1. Disabling globbing on individual pathspecs can be done using pathspec magic \":(literal)\""
            },
            {
                "name": "--noglob-pathspecs",
                "description": "Add \"literal\" magic to all pathspec. This is equivalent to setting the GIT_NOGLOB_PATHSPECS environment variable to 1. Enabling globbing on individual pathspecs can be done using pathspec magic \":(glob)\""
            },
            {
                "name": "--icase-pathspecs",
                "description": "Add \"icase\" magic to all pathspec. This is equivalent to setting the GIT_ICASE_PATHSPECS environment variable to 1."
            },
            {
                "name": "--list-cmds",
                "arguments": [
                    {
                        "name": "group[,group...]",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "description": "List commands by group. This is an internal/experimental option and may change or be removed in the future. Supported groups are: builtins, parseopt (builtin commands that use parse-options), main (all commands in libexec directory), others (all other commands in $PATH that have git- prefix), list-<category> (see categories in command-list.txt), nohelpers (exclude helper commands), alias and config (retrieve command list from config variable completion.commands)"
            },
            {
                "name": "--attr-source",
                "arguments": [
                    {
                        "name": "tree-ish",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "description": "Read gitattributes from <tree-ish> instead of the worktree. See gitattributes(5). This is equivalent to setting the GIT_ATTR_SOURCE environment variable."
            }
        ],
        "commands": [
            {
                "name": "add",
                "description": "Add file contents to the index",
                "arguments": [
                    {
                        "name": "pathspec",
                        "required": true,
                        "arity": {
                            "minimum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--dry-run",
                        "aliases": [
                            "-n"
                        ],
                        "description": "dry run",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--interactive",
                        "aliases": [
                            "-i"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "interactive picking"
                    },
                    {
                        "name": "--patch",
                        "aliases": [
                            "-p"
                        ],
                        "description": "select hunks interactively",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--edit",
                        "aliases": [
                            "-e"
                        ],
                        "description": "edit current diff and apply",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "description": "allow adding otherwise ignored files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--update",
                        "aliases": [
                            "-u"
                        ],
                        "description": "update tracked files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--renormalize",
                        "description": "renormalize EOL of tracked files (implies -u)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--intent-to-add",
                        "aliases": [
                            "-N"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "record only the fact that the path will be added later"
                    },
                    {
                        "name": "--all",
                        "aliases": [
                            "-A"
                        ],
                        "description": "add changes from all tracked and untracked files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ignore-removal",
                        "description": "ignore paths removed in the working tree (same as --no-all)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--refresh",
                        "description": "don't add, only refresh the index",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ignore-errors",
                        "description": "just skip files which cannot be added because of errors",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ignore-missing",
                        "description": "check if - even missing - files are ignored in dry run",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--sparse",
                        "description": "allow updating entries outside of the sparse-checkout cone",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--chmod",
                        "arguments": [
                            {
                                "name": "(+|-)x",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "override the executable bit of the listed files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--pathspec-from-file",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "read pathspec from file"
                    },
                    {
                        "name": "--pathspec-file-nul",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "with --pathspec-from-file, pathspec elements are separated with NUL character"
                    },
                    {
                        "name": "--no-warn-embedded-repo",
                        "description": "By default, git add will warn when adding an embedded repository to the index without using git submodule add to create an entry in .gitmodules. This option will suppress the warning (e.g., if you are manually performing operations on submodules).",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git add [<options>] [--] <pathspec>..."
                        ]
                    }
                ]
            },
            {
                "name": "am",
                "description": "Apply a series of patches from a mailbox",
                "arguments": [
                    {
                        "name": "mbox",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "Maildir",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--interactive",
                        "aliases": [
                            "-i"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "run interactively"
                    },
                    {
                        "name": "--no-verify",
                        "aliases": [
                            "-n"
                        ],
                        "description": "bypass pre-applypatch and applypatch-msg hooks"
                    },
                    {
                        "name": "--verify",
                        "description": "opposite of --no-verify"
                    },
                    {
                        "name": "--3way",
                        "aliases": [
                            "-3"
                        ],
                        "description": "allow fall back on 3way merging if needed",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be quiet",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--signoff",
                        "aliases": [
                            "-s"
                        ],
                        "description": "add a Signed-off-by trailer to the commit message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--utf8",
                        "aliases": [
                            "-u"
                        ],
                        "description": "recode into utf8 (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--keep",
                        "aliases": [
                            "-k"
                        ],
                        "description": "pass -k flag to git-mailinfo",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--keep-non-patch",
                        "description": "pass -b flag to git-mailinfo",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--message-id",
                        "aliases": [
                            "-m"
                        ],
                        "description": "pass -m flag to git-mailinfo",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--keep-cr",
                        "description": "pass --keep-cr flag to git-mailsplit for mbox format",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--scissors",
                        "aliases": [
                            "-c"
                        ],
                        "description": "strip everything before a scissors line",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quoted-cr",
                        "arguments": [
                            {
                                "name": "action",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "pass it through git-mailinfo"
                    },
                    {
                        "name": "--whitespace",
                        "arguments": [
                            {
                                "name": "action",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "pass it through git-apply"
                    },
                    {
                        "name": "--ignore-space-change",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "pass it through git-apply"
                    },
                    {
                        "name": "--ignore-whitespace",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "pass it through git-apply"
                    },
                    {
                        "name": "--directory",
                        "arguments": [
                            {
                                "name": "root",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "pass it through git-apply"
                    },
                    {
                        "name": "--exclude",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "pass it through git-apply",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--include",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "pass it through git-apply",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-C",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "pass it through git-apply"
                    },
                    {
                        "name": "-p",
                        "arguments": [
                            {
                                "name": "num",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "pass it through git-apply"
                    },
                    {
                        "name": "--patch-format",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "format the patch(es) are in"
                    },
                    {
                        "name": "--reject",
                        "description": "pass it through git-apply",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--resolvemsg",
                        "description": "... override error message when patch failure occurs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--continue",
                        "description": "continue applying patches after resolving a conflict"
                    },
                    {
                        "name": "--resolved",
                        "aliases": [
                            "-r"
                        ],
                        "description": "synonyms for --continue"
                    },
                    {
                        "name": "--skip",
                        "description": "skip the current patch"
                    },
                    {
                        "name": "--abort",
                        "description": "restore the original branch and abort the patching operation"
                    },
                    {
                        "name": "--quit",
                        "description": "abort the patching operation but keep HEAD where it is"
                    },
                    {
                        "name": "--show-current-patch",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "diff",
                                    "raw"
                                ]
                            }
                        ],
                        "description": "show the patch being applied"
                    },
                    {
                        "name": "--retry",
                        "description": "try to apply current patch again"
                    },
                    {
                        "name": "--allow-empty",
                        "description": "record the empty patch as an empty commit"
                    },
                    {
                        "name": "--committer-date-is-author-date",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "lie about committer date"
                    },
                    {
                        "name": "--ignore-date",
                        "description": "use current timestamp for author date",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--rerere-autoupdate",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "update the index with reused conflict resolution if possible"
                    },
                    {
                        "name": "--gpg-sign",
                        "aliases": [
                            "-S"
                        ],
                        "arguments": [
                            {
                                "name": "key-id",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "GPG-sign commits"
                    },
                    {
                        "name": "--empty",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "stop",
                                    "drop",
                                    "keep"
                                ]
                            }
                        ],
                        "description": "how to handle empty patches"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git am [<options>] [(<mbox> | <Maildir>)...]",
                            "git am [<options>] (--continue | --skip | --abort)"
                        ]
                    }
                ]
            },
            {
                "name": "archive",
                "description": "Create an archive of files from a named tree",
                "arguments": [
                    {
                        "name": "tree-ish",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "path",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--format",
                        "arguments": [
                            {
                                "name": "fmt",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "archive format",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "prepend prefix to each pathname in the archive"
                    },
                    {
                        "name": "--add-file",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "add untracked file to archive"
                    },
                    {
                        "name": "--add-virtual-file",
                        "arguments": [
                            {
                                "name": "path:content",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "add untracked file to archive"
                    },
                    {
                        "name": "--output",
                        "aliases": [
                            "-o"
                        ],
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "write the archive to this file"
                    },
                    {
                        "name": "--worktree-attributes",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "read .gitattributes in working directory"
                    },
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "report archived files on stderr",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--mtime",
                        "arguments": [
                            {
                                "name": "time",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "set modification time of archive entries"
                    },
                    {
                        "name": "-NUM",
                        "description": "set compression level"
                    },
                    {
                        "name": "--list",
                        "aliases": [
                            "-l"
                        ],
                        "description": "list supported archive formats",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--remote",
                        "arguments": [
                            {
                                "name": "repo",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "retrieve the archive from remote repository <repo>",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--exec",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "path to the remote git-upload-archive command",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git archive [<options>] <tree-ish> [<path>...]",
                            "git archive --list",
                            "git archive --remote <repo> [--exec <cmd>] [<options>] <tree-ish> [<path>...]",
                            "git archive --remote <repo> [--exec <cmd>] --list"
                        ]
                    }
                ]
            },
            {
                "name": "backfill",
                "description": "Download missing objects in a partial clone",
                "options": [
                    {
                        "name": "--min-batch-size",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Minimum number of objects to request at a time"
                    },
                    {
                        "name": "--sparse",
                        "description": "Restrict the missing objects to the current sparse-checkout",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git backfill [--min-batch-size=<n>] [--[no-]sparse]"
                        ]
                    }
                ]
            },
            {
                "name": "bisect",
                "description": "Use binary search to find the commit that introduced a bug",
                "commands": [
                    {
                        "name": "start",
                        "arguments": [
                            {
                                "name": "bad",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "good",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            },
                            {
                                "name": "pathspec",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--term-new",
                                "aliases": [
                                    "--term-bad"
                                ],
                                "arguments": [
                                    {
                                        "name": "term",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--term-old",
                                "aliases": [
                                    "--term-good"
                                ],
                                "arguments": [
                                    {
                                        "name": "term",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--no-checkout",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--first-parent",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bisect start [--term-(new|bad)=<term> --term-(old|good)=<term>]    [--no-checkout] [--first-parent] [<bad> [<good>...]] [--]    [<pathspec>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "good",
                        "arguments": [
                            {
                                "name": "rev",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bisect (good|bad) [<rev>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "bad",
                        "arguments": [
                            {
                                "name": "rev",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bisect (good|bad) [<rev>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "terms",
                        "options": [
                            {
                                "name": "--term-good",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--term-bad",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bisect terms [--term-good | --term-bad]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "skip",
                        "arguments": [
                            {
                                "name": "rev",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            },
                            {
                                "name": "range",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bisect skip [(<rev>|<range>)...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "next",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bisect next"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "reset",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bisect reset [<commit>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "visualize",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bisect visualize"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "replay",
                        "arguments": [
                            {
                                "name": "logfile",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bisect replay <logfile>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "log",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bisect log"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "run",
                        "arguments": [
                            {
                                "name": "cmd",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "arg",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bisect run <cmd> [<arg>...]"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git bisect start [--term-(new|bad)=<term> --term-(old|good)=<term>]    [--no-checkout] [--first-parent] [<bad> [<good>...]] [--]    [<pathspec>...]",
                            "git bisect (good|bad) [<rev>...]",
                            "git bisect terms [--term-good | --term-bad]",
                            "git bisect skip [(<rev>|<range>)...]",
                            "git bisect next",
                            "git bisect reset [<commit>]",
                            "git bisect visualize",
                            "git bisect replay <logfile>",
                            "git bisect log",
                            "git bisect run <cmd> [<arg>...]"
                        ]
                    }
                ]
            },
            {
                "name": "branch",
                "description": "List, create, or delete branches",
                "arguments": [
                    {
                        "name": "branch-name",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "start-point",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "pattern",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "old-branch",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "new-branch",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "group": "Generic options",
                        "description": "show hash and subject, give twice for upstream branch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "group": "Generic options",
                        "description": "suppress informational messages",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--track",
                        "aliases": [
                            "-t"
                        ],
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "direct",
                                    "inherit"
                                ]
                            }
                        ],
                        "group": "Generic options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "set branch tracking configuration"
                    },
                    {
                        "name": "--set-upstream-to",
                        "aliases": [
                            "-u"
                        ],
                        "arguments": [
                            {
                                "name": "upstream",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Generic options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "change the upstream info"
                    },
                    {
                        "name": "--unset-upstream",
                        "group": "Generic options",
                        "description": "unset the upstream info",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--color",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Generic options",
                        "description": "use colored output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--remotes",
                        "aliases": [
                            "-r"
                        ],
                        "group": "Generic options",
                        "description": "act on remote-tracking branches"
                    },
                    {
                        "name": "--contains",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Generic options",
                        "description": "print only branches that contain the commit"
                    },
                    {
                        "name": "--no-contains",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Generic options",
                        "description": "print only branches that don't contain the commit"
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Generic options",
                        "description": "use <n> digits to display object names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--all",
                        "aliases": [
                            "-a"
                        ],
                        "group": "Specific git-branch actions",
                        "description": "list both remote-tracking and local branches"
                    },
                    {
                        "name": "--delete",
                        "aliases": [
                            "-d"
                        ],
                        "group": "Specific git-branch actions",
                        "description": "delete fully merged branch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-D",
                        "group": "Specific git-branch actions",
                        "description": "delete branch (even if not merged)"
                    },
                    {
                        "name": "--move",
                        "aliases": [
                            "-m"
                        ],
                        "group": "Specific git-branch actions",
                        "description": "move/rename a branch and its reflog",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-M",
                        "group": "Specific git-branch actions",
                        "description": "move/rename a branch, even if target exists"
                    },
                    {
                        "name": "--omit-empty",
                        "group": "Specific git-branch actions",
                        "description": "do not output a newline after empty formatted refs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--copy",
                        "aliases": [
                            "-c"
                        ],
                        "group": "Specific git-branch actions",
                        "description": "copy a branch and its reflog",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-C",
                        "group": "Specific git-branch actions",
                        "description": "copy a branch, even if target exists"
                    },
                    {
                        "name": "--list",
                        "aliases": [
                            "-l"
                        ],
                        "group": "Specific git-branch actions",
                        "description": "list branch names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--show-current",
                        "group": "Specific git-branch actions",
                        "description": "show current branch name",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--create-reflog",
                        "group": "Specific git-branch actions",
                        "description": "create the branch's reflog",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--edit-description",
                        "group": "Specific git-branch actions",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "edit the description for the branch"
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "group": "Specific git-branch actions",
                        "description": "force creation, move/rename, deletion",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--merged",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Specific git-branch actions",
                        "description": "print only branches that are merged"
                    },
                    {
                        "name": "--no-merged",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Specific git-branch actions",
                        "description": "print only branches that are not merged"
                    },
                    {
                        "name": "--column",
                        "arguments": [
                            {
                                "name": "style",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Specific git-branch actions",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "list branches in columns"
                    },
                    {
                        "name": "--sort",
                        "arguments": [
                            {
                                "name": "key",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Specific git-branch actions",
                        "description": "field name to sort on",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--points-at",
                        "arguments": [
                            {
                                "name": "object",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Specific git-branch actions",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "print only branches of the object"
                    },
                    {
                        "name": "--ignore-case",
                        "aliases": [
                            "-i"
                        ],
                        "group": "Specific git-branch actions",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "sorting and filtering are case insensitive"
                    },
                    {
                        "name": "--recurse-submodules",
                        "group": "Specific git-branch actions",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "recurse through submodules"
                    },
                    {
                        "name": "--format",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Specific git-branch actions",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "format to use for the output"
                    },
                    {
                        "name": "--set-upstream",
                        "description": "As this option had confusing syntax, it is no longer supported. Please use --track or --set-upstream-to instead.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git branch [<options>] [-r | -a] [--merged] [--no-merged]",
                            "git branch [<options>] [-f] [--recurse-submodules] <branch-name> [<start-point>]",
                            "git branch [<options>] [-l] [<pattern>...]",
                            "git branch [<options>] [-r] (-d | -D) <branch-name>...",
                            "git branch [<options>] (-m | -M) [<old-branch>] <new-branch>",
                            "git branch [<options>] (-c | -C) [<old-branch>] <new-branch>",
                            "git branch [<options>] [-r | -a] [--points-at]",
                            "git branch [<options>] [-r | -a] [--format]"
                        ]
                    }
                ]
            },
            {
                "name": "bundle",
                "description": "Move objects and refs by archive",
                "commands": [
                    {
                        "name": "create",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "git-rev-list-args",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--quiet",
                                "aliases": [
                                    "-q"
                                ],
                                "description": "do not show progress meter",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--progress",
                                "description": "show progress meter",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--version",
                                "arguments": [
                                    {
                                        "name": "n",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "specify bundle format version",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bundle create [-q | --quiet | --progress] [--version=<version>] <file> <git-rev-list-args>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "verify",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--quiet",
                                "aliases": [
                                    "-q"
                                ],
                                "description": "do not show bundle details",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bundle verify [-q | --quiet] <file>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "list-heads",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "refname",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bundle list-heads <file> [<refname>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "unbundle",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "refname",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--progress",
                                "description": "show progress meter",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git bundle unbundle [--progress] <file> [<refname>...]"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git bundle create [-q | --quiet | --progress] [--version=<version>] <file> <git-rev-list-args>",
                            "git bundle verify [-q | --quiet] <file>",
                            "git bundle list-heads <file> [<refname>...]",
                            "git bundle unbundle [--progress] <file> [<refname>...]"
                        ]
                    }
                ]
            },
            {
                "name": "checkout",
                "description": "Switch branches or restore working tree files",
                "arguments": [
                    {
                        "name": "branch",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "file",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-b",
                        "arguments": [
                            {
                                "name": "branch",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "create and checkout a new branch"
                    },
                    {
                        "name": "-B",
                        "arguments": [
                            {
                                "name": "branch",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "create/reset and checkout a branch"
                    },
                    {
                        "name": "-l",
                        "description": "create reflog for new branch"
                    },
                    {
                        "name": "--guess",
                        "description": "second guess 'git checkout <no-such-branch>' (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--overlay",
                        "description": "use overlay mode (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "suppress progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--recurse-submodules",
                        "arguments": [
                            {
                                "name": "checkout",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "control recursive updating of submodules"
                    },
                    {
                        "name": "--progress",
                        "description": "force progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--merge",
                        "aliases": [
                            "-m"
                        ],
                        "description": "perform a 3-way merge with the new branch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--conflict",
                        "arguments": [
                            {
                                "name": "style",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "conflict style (merge, diff3, or zdiff3)"
                    },
                    {
                        "name": "--detach",
                        "aliases": [
                            "-d"
                        ],
                        "description": "detach HEAD at named commit",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--track",
                        "aliases": [
                            "-t"
                        ],
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "direct",
                                    "inherit"
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "set branch tracking configuration"
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "description": "force checkout (throw away local modifications)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--orphan",
                        "arguments": [
                            {
                                "name": "new-branch",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "new unborn branch"
                    },
                    {
                        "name": "--overwrite-ignore",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "update ignored files (default)"
                    },
                    {
                        "name": "--ignore-other-worktrees",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "do not check if another worktree is using this branch"
                    },
                    {
                        "name": "--ours",
                        "aliases": [
                            "-2"
                        ],
                        "description": "checkout our version for unmerged files"
                    },
                    {
                        "name": "--theirs",
                        "aliases": [
                            "-3"
                        ],
                        "description": "checkout their version for unmerged files"
                    },
                    {
                        "name": "--patch",
                        "aliases": [
                            "-p"
                        ],
                        "description": "select hunks interactively",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ignore-skip-worktree-bits",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "do not limit pathspecs to sparse entries only"
                    },
                    {
                        "name": "--pathspec-from-file",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "read pathspec from file"
                    },
                    {
                        "name": "--pathspec-file-nul",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "with --pathspec-from-file, pathspec elements are separated with NUL character"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git checkout [<options>] <branch>",
                            "git checkout [<options>] [<branch>] -- <file>..."
                        ]
                    }
                ]
            },
            {
                "name": "cherry-pick",
                "description": "Apply the changes introduced by some existing commits",
                "arguments": [
                    {
                        "name": "commit",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--quit",
                        "description": "end revert or cherry-pick sequence"
                    },
                    {
                        "name": "--continue",
                        "description": "resume revert or cherry-pick sequence"
                    },
                    {
                        "name": "--abort",
                        "description": "cancel revert or cherry-pick sequence"
                    },
                    {
                        "name": "--skip",
                        "description": "skip current commit and continue"
                    },
                    {
                        "name": "--cleanup",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "how to strip spaces and #comments from message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-commit",
                        "aliases": [
                            "-n"
                        ],
                        "description": "don't automatically commit"
                    },
                    {
                        "name": "--commit",
                        "description": "opposite of --no-commit"
                    },
                    {
                        "name": "--edit",
                        "aliases": [
                            "-e"
                        ],
                        "description": "edit the commit message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--signoff",
                        "aliases": [
                            "-s"
                        ],
                        "description": "add a Signed-off-by trailer",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--mainline",
                        "aliases": [
                            "-m"
                        ],
                        "arguments": [
                            {
                                "name": "parent-number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "select mainline parent"
                    },
                    {
                        "name": "--rerere-autoupdate",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "update the index with reused conflict resolution if possible"
                    },
                    {
                        "name": "--strategy",
                        "arguments": [
                            {
                                "name": "strategy",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "merge strategy"
                    },
                    {
                        "name": "--strategy-option",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "option",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "option for merge strategy"
                    },
                    {
                        "name": "--gpg-sign",
                        "aliases": [
                            "-S"
                        ],
                        "arguments": [
                            {
                                "name": "key-id",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "GPG sign commit"
                    },
                    {
                        "name": "-x",
                        "description": "append commit name"
                    },
                    {
                        "name": "--ff",
                        "description": "allow fast-forward",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--allow-empty",
                        "description": "preserve initially empty commits",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--allow-empty-message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "allow commits with empty messages"
                    },
                    {
                        "name": "--keep-redundant-commits",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "deprecated: use --empty=keep instead"
                    },
                    {
                        "name": "--empty",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "stop",
                                    "drop",
                                    "keep"
                                ]
                            }
                        ],
                        "description": "how to handle commits that become empty"
                    },
                    {
                        "name": "-r",
                        "description": "It used to be that the command defaulted to do -x described above, and -r was to disable it. Now the default is not to do -x so this option is a no-op.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git cherry-pick [--edit] [-n] [-m <parent-number>] [-s] [-x] [--ff] [-S[<keyid>]] <commit>...",
                            "git cherry-pick (--continue | --skip | --abort | --quit)"
                        ]
                    }
                ]
            },
            {
                "name": "clean",
                "description": "Remove untracked files from the working tree",
                "arguments": [
                    {
                        "name": "pathspec",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "do not print names of files removed",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--dry-run",
                        "aliases": [
                            "-n"
                        ],
                        "description": "dry run",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "description": "force",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--interactive",
                        "aliases": [
                            "-i"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "interactive cleaning"
                    },
                    {
                        "name": "-d",
                        "description": "remove whole directories"
                    },
                    {
                        "name": "--exclude",
                        "aliases": [
                            "-e"
                        ],
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "add <pattern> to ignore rules"
                    },
                    {
                        "name": "-x",
                        "description": "remove ignored files, too"
                    },
                    {
                        "name": "-X",
                        "description": "remove only ignored files"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] [<pathspec>...]"
                        ]
                    }
                ]
            },
            {
                "name": "clone",
                "description": "Clone a repository into a new directory",
                "arguments": [
                    {
                        "name": "repo",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "dir",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be more verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be more quiet",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--progress",
                        "description": "force progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--reject-shallow",
                        "description": "don't clone shallow repository",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-checkout",
                        "aliases": [
                            "-n"
                        ],
                        "description": "don't create a checkout"
                    },
                    {
                        "name": "--checkout",
                        "description": "opposite of --no-checkout"
                    },
                    {
                        "name": "--bare",
                        "description": "create a bare repository",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--mirror",
                        "description": "create a mirror repository (implies --bare)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--local",
                        "aliases": [
                            "-l"
                        ],
                        "description": "to clone from a local repository",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-hardlinks",
                        "description": "don't use local hardlinks, always copy"
                    },
                    {
                        "name": "--hardlinks",
                        "description": "opposite of --no-hardlinks"
                    },
                    {
                        "name": "--shared",
                        "aliases": [
                            "-s"
                        ],
                        "description": "setup as shared repository",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--recurse-submodules",
                        "arguments": [
                            {
                                "name": "pathspec",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "initialize submodules in the clone"
                    },
                    {
                        "name": "--recursive",
                        "arguments": [
                            {
                                "name": "pathspec",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "alias of --recurse-submodules"
                    },
                    {
                        "name": "--jobs",
                        "aliases": [
                            "-j"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "number of submodules cloned in parallel",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--template",
                        "arguments": [
                            {
                                "name": "template-directory",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "directory from which templates will be used"
                    },
                    {
                        "name": "--reference",
                        "arguments": [
                            {
                                "name": "repo",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "reference repository"
                    },
                    {
                        "name": "--reference-if-able",
                        "arguments": [
                            {
                                "name": "repo",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "reference repository"
                    },
                    {
                        "name": "--dissociate",
                        "description": "use --reference only while cloning",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--origin",
                        "aliases": [
                            "-o"
                        ],
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use <name> instead of 'origin' to track upstream"
                    },
                    {
                        "name": "--branch",
                        "aliases": [
                            "-b"
                        ],
                        "arguments": [
                            {
                                "name": "branch",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "checkout <branch> instead of the remote's HEAD"
                    },
                    {
                        "name": "--revision",
                        "arguments": [
                            {
                                "name": "rev",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "clone single revision <rev> and check out",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--upload-pack",
                        "aliases": [
                            "-u"
                        ],
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "path to git-upload-pack on the remote"
                    },
                    {
                        "name": "--depth",
                        "arguments": [
                            {
                                "name": "depth",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "create a shallow clone of that depth",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--shallow-since",
                        "arguments": [
                            {
                                "name": "time",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "create a shallow clone since a specific time"
                    },
                    {
                        "name": "--shallow-exclude",
                        "arguments": [
                            {
                                "name": "ref",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "deepen history of shallow clone, excluding ref"
                    },
                    {
                        "name": "--single-branch",
                        "description": "clone only one branch, HEAD or --branch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--tags",
                        "description": "clone tags, and make later fetches not to follow them",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--shallow-submodules",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "any cloned submodules will be shallow"
                    },
                    {
                        "name": "--separate-git-dir",
                        "arguments": [
                            {
                                "name": "gitdir",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "separate git dir from working tree"
                    },
                    {
                        "name": "--ref-format",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "specify the reference format to use"
                    },
                    {
                        "name": "--config",
                        "aliases": [
                            "-c"
                        ],
                        "arguments": [
                            {
                                "name": "key=value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "set config inside the new repository"
                    },
                    {
                        "name": "--server-option",
                        "arguments": [
                            {
                                "name": "server-specific",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "option to transmit"
                    },
                    {
                        "name": "--ipv4",
                        "aliases": [
                            "-4"
                        ],
                        "description": "use IPv4 addresses only"
                    },
                    {
                        "name": "--ipv6",
                        "aliases": [
                            "-6"
                        ],
                        "description": "use IPv6 addresses only"
                    },
                    {
                        "name": "--filter",
                        "arguments": [
                            {
                                "name": "args",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "object filtering",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--also-filter-submodules",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "apply partial clone filters to submodules"
                    },
                    {
                        "name": "--remote-submodules",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "any cloned submodules will use their remote-tracking branch"
                    },
                    {
                        "name": "--sparse",
                        "description": "initialize sparse-checkout file to include only files at root",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--bundle-uri",
                        "arguments": [
                            {
                                "name": "uri",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "a URI for downloading bundles before fetching from origin remote"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git clone [<options>] [--] <repo> [<dir>]"
                        ]
                    }
                ]
            },
            {
                "name": "commit",
                "description": "Record changes to the repository",
                "arguments": [
                    {
                        "name": "pathspec",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "suppress summary after successful commit",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "show diff in commit message template",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--file",
                        "aliases": [
                            "-F"
                        ],
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit message options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "read message from file"
                    },
                    {
                        "name": "--author",
                        "arguments": [
                            {
                                "name": "author",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit message options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "override author for commit"
                    },
                    {
                        "name": "--date",
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit message options",
                        "description": "override date for commit",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--message",
                        "aliases": [
                            "-m"
                        ],
                        "arguments": [
                            {
                                "name": "message",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit message options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "commit message"
                    },
                    {
                        "name": "--reedit-message",
                        "aliases": [
                            "-c"
                        ],
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit message options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "reuse and edit message from specified commit"
                    },
                    {
                        "name": "--reuse-message",
                        "aliases": [
                            "-C"
                        ],
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit message options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "reuse message from specified commit"
                    },
                    {
                        "name": "--fixup",
                        "arguments": [
                            {
                                "name": "[(amend|reword):]commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit message options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use autosquash formatted message to fixup or amend/reword specified commit"
                    },
                    {
                        "name": "--squash",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit message options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use autosquash formatted message to squash specified commit"
                    },
                    {
                        "name": "--reset-author",
                        "group": "Commit message options",
                        "description": "the commit is authored by me now (used with -C/-c/--amend)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--trailer",
                        "arguments": [
                            {
                                "name": "trailer",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit message options",
                        "description": "add custom trailer(s)"
                    },
                    {
                        "name": "--signoff",
                        "aliases": [
                            "-s"
                        ],
                        "group": "Commit message options",
                        "description": "add a Signed-off-by trailer",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--template",
                        "aliases": [
                            "-t"
                        ],
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit message options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use specified template file"
                    },
                    {
                        "name": "--edit",
                        "aliases": [
                            "-e"
                        ],
                        "group": "Commit message options",
                        "description": "force edit of commit",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--cleanup",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit message options",
                        "description": "how to strip spaces and #comments from message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--status",
                        "group": "Commit message options",
                        "description": "include status in commit message template",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--gpg-sign",
                        "aliases": [
                            "-S"
                        ],
                        "arguments": [
                            {
                                "name": "key-id",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit message options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "GPG sign commit"
                    },
                    {
                        "name": "--all",
                        "aliases": [
                            "-a"
                        ],
                        "group": "Commit contents options",
                        "description": "commit all changed files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--include",
                        "aliases": [
                            "-i"
                        ],
                        "group": "Commit contents options",
                        "description": "add specified files to index for commit",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--interactive",
                        "group": "Commit contents options",
                        "description": "interactively add files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--patch",
                        "aliases": [
                            "-p"
                        ],
                        "group": "Commit contents options",
                        "description": "interactively add changes",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--only",
                        "aliases": [
                            "-o"
                        ],
                        "group": "Commit contents options",
                        "description": "commit only specified files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-verify",
                        "aliases": [
                            "-n"
                        ],
                        "group": "Commit contents options",
                        "description": "bypass pre-commit and commit-msg hooks"
                    },
                    {
                        "name": "--verify",
                        "group": "Commit contents options",
                        "description": "opposite of --no-verify"
                    },
                    {
                        "name": "--dry-run",
                        "group": "Commit contents options",
                        "description": "show what would be committed",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--short",
                        "group": "Commit contents options",
                        "description": "show status concisely",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--branch",
                        "group": "Commit contents options",
                        "description": "show branch information",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ahead-behind",
                        "group": "Commit contents options",
                        "description": "compute full ahead/behind values",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--porcelain",
                        "group": "Commit contents options",
                        "description": "machine-readable output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--long",
                        "group": "Commit contents options",
                        "description": "show status in long format (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--null",
                        "aliases": [
                            "-z"
                        ],
                        "group": "Commit contents options",
                        "description": "terminate entries with NUL",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--amend",
                        "group": "Commit contents options",
                        "description": "amend previous commit",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-post-rewrite",
                        "group": "Commit contents options",
                        "description": "bypass post-rewrite hook"
                    },
                    {
                        "name": "--post-rewrite",
                        "group": "Commit contents options",
                        "description": "opposite of --no-post-rewrite"
                    },
                    {
                        "name": "--untracked-files",
                        "aliases": [
                            "-u"
                        ],
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit contents options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show untracked files, optional modes: all, normal, no. (Default: all)"
                    },
                    {
                        "name": "--pathspec-from-file",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Commit contents options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "read pathspec from file"
                    },
                    {
                        "name": "--pathspec-file-nul",
                        "group": "Commit contents options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "with --pathspec-from-file, pathspec elements are separated with NUL character"
                    },
                    {
                        "name": "--allow-empty",
                        "description": "Usually recording a commit that has the exact same tree as its sole parent commit is a mistake, and the command prevents you from making such a commit. This option bypasses the safety, and is primarily for use by foreign SCM interface scripts.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--allow-empty-message",
                        "description": "Create a commit with an empty commit message without using plumbing commands like git-commit-tree(1). Like --allow-empty, this command is primarily for use by foreign SCM interface scripts.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git commit [-a | --interactive | --patch] [-s] [-v] [-u[<mode>]] [--amend] [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|reword):]<commit>] [-F <file> | -m <msg>] [--reset-author] [--allow-empty] [--allow-empty-message] [--no-verify] [-e] [--author=<author>] [--date=<date>] [--cleanup=<mode>] [--[no-]status] [-i | -o] [--pathspec-from-file=<file> [--pathspec-file-nul]] [(--trailer <token>[(=|:)<value>])...] [-S[<keyid>]] [--] [<pathspec>...]"
                        ]
                    }
                ]
            },
            {
                "name": "describe",
                "description": "Give an object a human readable name based on an available ref",
                "arguments": [
                    {
                        "name": "commit-ish",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "blob",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--contains",
                        "description": "find the tag that comes after the commit",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--debug",
                        "description": "debug search strategy on stderr",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--all",
                        "description": "use any ref",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--tags",
                        "description": "use any tag, even unannotated",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--long",
                        "description": "always use long format",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--first-parent",
                        "description": "only follow first parent",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "use <n> digits to display object names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--exact-match",
                        "description": "only output exact matches",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--candidates",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "consider <n> most recent tags (default: 10)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--match",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "only consider tags matching <pattern>"
                    },
                    {
                        "name": "--exclude",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "do not consider tags matching <pattern>"
                    },
                    {
                        "name": "--always",
                        "description": "show abbreviated commit object as fallback",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--dirty",
                        "arguments": [
                            {
                                "name": "mark",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "append <mark> on dirty working tree (default: \"-dirty\")",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--broken",
                        "arguments": [
                            {
                                "name": "mark",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "append <mark> on broken working tree (default: \"-broken\")"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git describe [--all] [--tags] [--contains] [--abbrev=<n>] [<commit-ish>...]",
                            "git describe [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>]",
                            "git describe <blob>"
                        ]
                    }
                ]
            },
            {
                "name": "diff",
                "description": "Show changes between commits, commit and working tree, etc",
                "arguments": [
                    {
                        "name": "commit",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "path",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "blob",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--patch",
                        "aliases": [
                            "-p",
                            "-u"
                        ],
                        "description": "Generate patch (see the section called \"GENERATING PATCH TEXT WITH -P\"). This is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--unified",
                        "aliases": [
                            "-U"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate diffs with <n> lines of context instead of the usual three. Implies --patch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output to a specific file instead of stdout.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output-indicator-new",
                        "aliases": [
                            "--output-indicator-old",
                            "--output-indicator-context"
                        ],
                        "arguments": [
                            {
                                "name": "char",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the character used to indicate new, old or context lines in the generated patch. Normally they are +, - and ' ' respectively.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--raw",
                        "description": "Generate the diff in raw format.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch-with-raw",
                        "description": "Synonym for -p --raw.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--indent-heuristic",
                        "description": "Enable the heuristic that shifts diff hunk boundaries to make patches easier to read. This is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--minimal",
                        "description": "Spend extra time to make sure the smallest possible diff is produced.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patience",
                        "description": "Generate a diff using the \"patience diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--histogram",
                        "description": "Generate a diff using the \"histogram diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--anchored",
                        "arguments": [
                            {
                                "name": "text",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diff using the \"anchored diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-algorithm",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "patience",
                                    "minimal",
                                    "histogram",
                                    "myers"
                                ]
                            }
                        ],
                        "description": "Choose a diff algorithm. The variants are as follows:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stat",
                        "arguments": [
                            {
                                "name": "width[,name-width[,count]]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diffstat. By default, as much space as necessary will be used for the filename part, and the rest for the graph part. Maximum width defaults to terminal width, or 80 columns if not connected to a terminal, and can be overridden by <width>. The width of the filename part can be limited by giving another width <name-width> after a comma or by setting diff.statNameWidth=<name-width>. The width of the graph part can be limited by using --stat-graph-width=<graph-width> or by setting diff.statGraphWidth=<graph-width>. Using --stat or --stat-graph-width affects all commands generating a stat graph, while setting diff.statNameWidth or diff.statGraphWidth does not affect git format-patch. By giving a third parameter <count>, you can limit the output to the first <count> lines, followed by ... if there are more.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--compact-summary",
                        "description": "Output a condensed summary of extended header information such as file creations or deletions (\"new\" or \"gone\", optionally +l if it's a symlink) and mode changes (+x or -x for adding or removing executable bit respectively) in diffstat. The information is put between the filename part and the graph part. Implies --stat.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--numstat",
                        "description": "Similar to --stat, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two - instead of saying 0 0.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--shortstat",
                        "description": "Output only the last line of the --stat format containing total number of modified files, as well as number of added and deleted lines.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output the distribution of relative amount of changes for each sub-directory. The behavior of --dirstat can be customized by passing it a comma separated list of parameters. The defaults are controlled by the diff.dirstat configuration variable (see git-config(1)). The following parameters are available:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cumulative",
                        "description": "Synonym for --dirstat=cumulative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat-by-file",
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Synonym for --dirstat=files,<param>,....",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--summary",
                        "description": "Output a condensed summary of extended header information such as creations, renames and mode changes.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch-with-stat",
                        "description": "Synonym for -p --stat.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-z",
                        "description": "When --raw, --numstat, --name-only or --name-status has been given, do not munge pathnames and use NULs as output field terminators.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--name-only",
                        "description": "Show only the name of each changed file in the post-image tree. The file names are often encoded in UTF-8. For more information see the discussion about encoding in the git-log(1) manual page.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--name-status",
                        "description": "Show only the name(s) and status of each changed file. See the description of the --diff-filter option on what the status letters mean. Just like --name-only the file names are often encoded in UTF-8.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--submodule",
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify how differences in submodules are shown. When specifying --submodule=short the short format is used. This format just shows the names of the commits at the beginning and end of the range. When --submodule or --submodule=log is specified, the log format is used. This format lists the commits in the range like git-submodule(1) summary does. When --submodule=diff is specified, the diff format is used. This format shows an inline diff of the changes in the submodule contents between the commit range. Defaults to diff.submodule or the short format if the config option is unset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show colored diff. --color (i.e. without =<when>) is the same as --color=always. <when> can be one of always, never, or auto. It can be changed by the color.ui and color.diff configuration settings.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-moved",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Moved lines of code are colored differently. It can be changed by the diff.colorMoved configuration setting. The <mode> defaults to no if the option is not given and to zebra if the option with no mode is given. The mode must be one of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-moved-ws",
                        "arguments": [
                            {
                                "name": "mode,...",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This configures how whitespace is ignored when performing the move detection for --color-moved. It can be set by the diff.colorMovedWS configuration setting. These modes can be given as a comma separated list:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--word-diff",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "By default, words are delimited by whitespace; see --word-diff-regex below. The <mode> defaults to plain, and must be one of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--word-diff-regex",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Use <regex> to decide what a word is, instead of considering runs of non-whitespace to be a word. Also implies --word-diff unless it was already enabled.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-words",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Equivalent to --word-diff=color plus (if a regex was specified) --word-diff-regex=<regex>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-renames",
                        "description": "Turn off rename detection, even when the configuration file gives the default to do so.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--rename-empty",
                        "description": "Whether to use empty blobs as rename source.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--check",
                        "description": "Warn if changes introduce conflict markers or whitespace errors. What are considered whitespace errors is controlled by core.whitespace configuration. By default, trailing whitespaces (including lines that consist solely of whitespaces) and a space character that is immediately followed by a tab character inside the initial indent of the line are considered whitespace errors. Exits with non-zero status if problems are found. Not compatible with --exit-code.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ws-error-highlight",
                        "arguments": [
                            {
                                "name": "kind",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Highlight whitespace errors in the context, old or new lines of the diff. Multiple values are separated by comma, none resets previous values, default reset the list to new and all is a shorthand for old,new,context. When this option is not given, and the configuration variable diff.wsErrorHighlight is not set, only whitespace errors in new lines are highlighted. The whitespace errors are colored with color.diff.whitespace.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--full-index",
                        "description": "Instead of the first handful of characters, show the full pre- and post-image blob object names on the \"index\" line when generating patch format output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--binary",
                        "description": "In addition to --full-index, output a binary diff that can be applied with git-apply. Implies --patch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header lines, show the shortest prefix that is at least <n> hexdigits long that uniquely refers the object. In diff-patch output format, --full-index takes higher precedence, i.e. if --full-index is specified, full blob names will be shown regardless of --abbrev. Non default number of digits can be specified with --abbrev=<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--break-rewrites",
                        "aliases": [
                            "-B"
                        ],
                        "arguments": [
                            {
                                "name": "[n][/m]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Break complete rewrite changes into pairs of delete and create. This serves two purposes:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-renames",
                        "aliases": [
                            "-M"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Detect renames. If <n> is specified, it is a threshold on the similarity index (i.e. amount of addition/deletions compared to the file's size). For example, -M90% means Git should consider a delete/add pair to be a rename if more than 90% of the file hasn't changed. Without a % sign, the number is to be read as a fraction, with a decimal point before it. I.e., -M5 becomes 0.5, and is thus the same as -M50%. Similarly, -M05 is the same as -M5%. To limit detection to exact renames, use -M100%. The default similarity index is 50%.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies",
                        "aliases": [
                            "-C"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Detect copies as well as renames. See also --find-copies-harder. If <n> is specified, it has the same meaning as for -M<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies-harder",
                        "description": "For performance reasons, by default, -C option finds copies only if the original file of the copy was modified in the same changeset. This flag makes the command inspect unmodified files as candidates for the source of copy. This is a very expensive operation for large projects, so use it with caution. Giving more than one -C option has the same effect.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--irreversible-delete",
                        "aliases": [
                            "-D"
                        ],
                        "description": "Omit the preimage for deletes, i.e. print only the header but not the diff between the preimage and /dev/null. The resulting patch is not meant to be applied with patch or git apply; this is solely for people who want to just concentrate on reviewing the text after the change. In addition, the output obviously lacks enough information to apply such a patch in reverse, even manually, hence the name of the option.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-l",
                        "arguments": [
                            {
                                "name": "num",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "The -M and -C options involve some preliminary steps that can detect subsets of renames/copies cheaply, followed by an exhaustive fallback portion that compares all remaining unpaired destinations to all relevant sources. (For renames, only remaining unpaired sources are relevant; for copies, all original sources are relevant.) For N sources and destinations, this exhaustive check is O(N^2). This option prevents the exhaustive portion of rename/copy detection from running if the number of source/destination files involved exceeds the specified number. Defaults to diff.renameLimit. Note that a value of 0 is treated as unlimited.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-filter",
                        "arguments": [
                            {
                                "name": "[(A|C|D|M|R|T|U|X|B)...[*]]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (i.e. regular file, symlink, submodule, ...) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B). Any combination of the filter characters (including none) can be used. When * (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-S",
                        "arguments": [
                            {
                                "name": "string",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences that change the number of occurrences of the specified <string> (i.e. addition/deletion) in a file. Intended for the scripter's use.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-G",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences whose patch text contains added/removed lines that match <regex>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-object",
                        "arguments": [
                            {
                                "name": "object-id",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences that change the number of occurrences of the specified object. Similar to -S, just the argument is different in that it doesn't search for a specific string but for a specific object id.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pickaxe-all",
                        "description": "When -S or -G finds a change, show all the changes in that changeset, not just the files that contain the change in <string>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pickaxe-regex",
                        "description": "Treat the <string> given to -S as an extended POSIX regular expression to match.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-O",
                        "arguments": [
                            {
                                "name": "orderfile",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Control the order in which files appear in the output. This overrides the diff.orderFile configuration variable (see git-config(1)). To cancel diff.orderFile, use -O/dev/null.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--skip-to",
                        "aliases": [
                            "--rotate-to"
                        ],
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Discard the files before the named <file> from the output (i.e. skip to), or move them to the end of the output (i.e. rotate to). These options were invented primarily for the use of the git difftool command, and may not be very useful otherwise.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-R",
                        "description": "Swap two inputs; that is, show differences from index or on-disk file to tree contents.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--relative",
                        "aliases": [
                            "--no-relative"
                        ],
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. --no-relative can be used to countermand both diff.relative config option and previous --relative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--text",
                        "aliases": [
                            "-a"
                        ],
                        "description": "Treat all files as text.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-cr-at-eol",
                        "description": "Ignore carriage-return at the end of line when doing a comparison.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-at-eol",
                        "description": "Ignore changes in whitespace at EOL.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-change",
                        "aliases": [
                            "-b"
                        ],
                        "description": "Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-all-space",
                        "aliases": [
                            "-w"
                        ],
                        "description": "Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-blank-lines",
                        "description": "Ignore changes whose lines are all blank.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-matching-lines",
                        "aliases": [
                            "-I"
                        ],
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Ignore changes whose all lines match <regex>. This option may be specified more than once.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--inter-hunk-context",
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the context between diff hunks, up to the specified <number> of lines, thereby fusing hunks that are close to each other. Defaults to diff.interHunkContext or 0 if the config option is unset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--function-context",
                        "aliases": [
                            "-W"
                        ],
                        "description": "Show whole function as context lines for each change. The function names are determined in the same way as git diff works out patch hunk headers (see \"Defining a custom hunk-header\" in gitattributes(5)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exit-code",
                        "description": "Make the program exit with codes similar to diff(1). That is, it exits with 1 if there were differences and 0 means no differences.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "description": "Disable all output of the program. Implies --exit-code. Disables execution of external diff helpers whose exit code is not trusted, i.e. their respective configuration option diff.trustExitCode or diff.<driver>.trustExitCode or environment variable GIT_EXTERNAL_DIFF_TRUST_EXIT_CODE is false.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ext-diff",
                        "description": "Allow an external diff helper to be executed. If you set an external diff driver with gitattributes(5), you need to use this option with git-log(1) and friends.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--textconv",
                        "aliases": [
                            "--no-textconv"
                        ],
                        "description": "Allow (or disallow) external text conversion filters to be run when comparing binary files. See gitattributes(5) for details. Because textconv filters are typically a one-way conversion, the resulting diff is suitable for human consumption, but cannot be applied. For this reason, textconv filters are enabled by default only for git-diff(1) and git-log(1), but not for git-format-patch(1) or diff plumbing commands.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-submodules",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "none",
                                    "untracked",
                                    "dirty",
                                    "all"
                                ]
                            }
                        ],
                        "description": "Ignore changes to submodules in the diff generation. all is the default. Using none will consider the submodule modified when it either contains untracked or modified files or its HEAD differs from the commit recorded in the superproject and can be used to override any settings of the ignore option in git-config(1) or gitmodules(5). When untracked is used submodules are not considered dirty when they only contain untracked content (but they are still scanned for modified content). Using dirty ignores all changes to the work tree of submodules, only changes to the commits stored in the superproject are shown (this was the behavior until 1.7.0). Using all hides all changes to submodules.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--src-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given source <prefix> instead of \"a/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dst-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given destination <prefix> instead of \"b/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-prefix",
                        "description": "Do not show any source or destination prefix.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--default-prefix",
                        "description": "Use the default source and destination prefixes (\"a/\" and \"b/\"). This overrides configuration variables such as diff.noprefix, diff.srcPrefix, diff.dstPrefix, and diff.mnemonicPrefix (see git-config(1)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--line-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Prepend an additional <prefix> to every line of output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ita-invisible-in-index",
                        "description": "By default entries added by git add -N appear as an existing empty file in git diff and a new file in git diff --cached. This option makes the entry appear as a new file in git diff and non-existent in git diff --cached. This option could be reverted with --ita-visible-in-index. Both options are experimental and could be removed in future.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--base",
                        "aliases": [
                            "-1",
                            "-2",
                            "--ours",
                            "-3",
                            "--theirs"
                        ],
                        "description": "Compare the working tree with",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-0",
                        "description": "Omit diff output for unmerged entries and just show \"Unmerged\". Can be used only when comparing the working tree with the index.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git diff [<options>] [<commit>] [--] [<path>...]",
                            "git diff [<options>] --cached [--merge-base] [<commit>] [--] [<path>...]",
                            "git diff [<options>] [--merge-base] <commit> [<commit>...] <commit> [--] [<path>...]",
                            "git diff [<options>] <commit>...<commit> [--] [<path>...]",
                            "git diff [<options>] <blob> <blob>",
                            "git diff [<options>] --no-index [--] <path> <path>"
                        ]
                    }
                ]
            },
            {
                "name": "fetch",
                "description": "Download objects and refs from another repository",
                "arguments": [
                    {
                        "name": "repository",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "refspec",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "group",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be more verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be more quiet",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--all",
                        "description": "fetch from all remotes",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--set-upstream",
                        "description": "set upstream for git pull/fetch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--append",
                        "aliases": [
                            "-a"
                        ],
                        "description": "append to .git/FETCH_HEAD instead of overwriting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--atomic",
                        "description": "use atomic transaction to update references",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--upload-pack",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "path to upload pack on remote end"
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "description": "force overwrite of local reference",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--multiple",
                        "aliases": [
                            "-m"
                        ],
                        "description": "fetch from multiple remotes",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--tags",
                        "aliases": [
                            "-t"
                        ],
                        "description": "fetch all tags and associated objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-n",
                        "description": "do not fetch all tags (--no-tags)"
                    },
                    {
                        "name": "--jobs",
                        "aliases": [
                            "-j"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "number of submodules fetched in parallel",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--prefetch",
                        "description": "modify the refspec to place all refs within refs/prefetch/",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--prune",
                        "aliases": [
                            "-p"
                        ],
                        "description": "prune remote-tracking branches no longer on remote",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--prune-tags",
                        "aliases": [
                            "-P"
                        ],
                        "description": "prune local tags no longer on remote and clobber changed tags",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--recurse-submodules",
                        "arguments": [
                            {
                                "name": "on-demand",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "control recursive fetching of submodules"
                    },
                    {
                        "name": "--dry-run",
                        "description": "dry run",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--porcelain",
                        "description": "machine-readable output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--write-fetch-head",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "write fetched references to the FETCH_HEAD file"
                    },
                    {
                        "name": "--keep",
                        "aliases": [
                            "-k"
                        ],
                        "description": "keep downloaded pack",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--update-head-ok",
                        "aliases": [
                            "-u"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "allow updating of HEAD ref"
                    },
                    {
                        "name": "--progress",
                        "description": "force progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--depth",
                        "arguments": [
                            {
                                "name": "depth",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "deepen history of shallow clone",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--shallow-since",
                        "arguments": [
                            {
                                "name": "time",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "deepen history of shallow repository based on time"
                    },
                    {
                        "name": "--shallow-exclude",
                        "arguments": [
                            {
                                "name": "ref",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "deepen history of shallow clone, excluding ref"
                    },
                    {
                        "name": "--deepen",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "deepen history of shallow clone",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--unshallow",
                        "description": "convert to a complete repository"
                    },
                    {
                        "name": "--refetch",
                        "description": "re-fetch without negotiating common commits"
                    },
                    {
                        "name": "--update-shallow",
                        "description": "accept refs that update .git/shallow",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--refmap",
                        "arguments": [
                            {
                                "name": "refmap",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "specify fetch refmap"
                    },
                    {
                        "name": "--server-option",
                        "aliases": [
                            "-o"
                        ],
                        "arguments": [
                            {
                                "name": "server-specific",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "option to transmit"
                    },
                    {
                        "name": "--ipv4",
                        "aliases": [
                            "-4"
                        ],
                        "description": "use IPv4 addresses only"
                    },
                    {
                        "name": "--ipv6",
                        "aliases": [
                            "-6"
                        ],
                        "description": "use IPv6 addresses only"
                    },
                    {
                        "name": "--negotiation-tip",
                        "arguments": [
                            {
                                "name": "revision",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "report that we have only objects reachable from this object"
                    },
                    {
                        "name": "--negotiate-only",
                        "description": "do not fetch a packfile; instead, print ancestors of negotiation tips",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--filter",
                        "arguments": [
                            {
                                "name": "args",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "object filtering",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--auto-maintenance",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "run 'maintenance --auto' after fetching"
                    },
                    {
                        "name": "--auto-gc",
                        "description": "run 'maintenance --auto' after fetching",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--show-forced-updates",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "check for forced-updates on all updated branches"
                    },
                    {
                        "name": "--write-commit-graph",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "write the commit-graph after fetching"
                    },
                    {
                        "name": "--stdin",
                        "description": "accept refspecs from stdin",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--submodule-prefix",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Prepend <path> to paths printed in informative messages such as \"Fetching submodule foo\". This option is used internally when recursing over submodules.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--recurse-submodules-default",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "yes",
                                    "on-demand"
                                ]
                            }
                        ],
                        "description": "This option is used internally to temporarily provide a non-negative default value for the --recurse-submodules option. All other methods of configuring fetch's submodule recursion (such as settings in gitmodules(5) and git-config(1)) override this option, as does specifying --[no-]recurse-submodules directly.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git fetch [<options>] [<repository> [<refspec>...]]",
                            "git fetch [<options>] <group>",
                            "git fetch --multiple [<options>] [(<repository> | <group>)...]",
                            "git fetch --all [<options>]"
                        ]
                    }
                ]
            },
            {
                "name": "format-patch",
                "description": "Prepare patches for e-mail submission",
                "arguments": [
                    {
                        "name": "since",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "revision-range",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--numbered",
                        "aliases": [
                            "-n"
                        ],
                        "description": "use [PATCH n/m] even with a single patch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-numbered",
                        "aliases": [
                            "-N"
                        ],
                        "description": "use [PATCH] even with multiple patches"
                    },
                    {
                        "name": "--signoff",
                        "aliases": [
                            "-s"
                        ],
                        "description": "add a Signed-off-by trailer",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--stdout",
                        "description": "print patches to standard out",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--cover-letter",
                        "description": "generate a cover letter",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--numbered-files",
                        "description": "use simple number sequence for output file names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--suffix",
                        "arguments": [
                            {
                                "name": "sfx",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "use <sfx> instead of '.patch'",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--start-number",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "start numbering patches at <n> instead of 1"
                    },
                    {
                        "name": "--reroll-count",
                        "aliases": [
                            "-v"
                        ],
                        "arguments": [
                            {
                                "name": "reroll-count",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "mark the series as Nth re-roll"
                    },
                    {
                        "name": "--filename-max-length",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "max length of output filename"
                    },
                    {
                        "name": "--rfc",
                        "arguments": [
                            {
                                "name": "rfc",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "add <rfc> (default 'RFC') before 'PATCH'",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--cover-from-description",
                        "arguments": [
                            {
                                "name": "cover-from-description-mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "generate parts of a cover letter based on a branch's description"
                    },
                    {
                        "name": "--description-file",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use branch description from file"
                    },
                    {
                        "name": "--subject-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "use [<prefix>] instead of [PATCH]"
                    },
                    {
                        "name": "--output-directory",
                        "aliases": [
                            "-o"
                        ],
                        "arguments": [
                            {
                                "name": "dir",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "store resulting files in <dir>"
                    },
                    {
                        "name": "--keep-subject",
                        "aliases": [
                            "-k"
                        ],
                        "description": "don't strip/add [PATCH]"
                    },
                    {
                        "name": "--no-binary",
                        "description": "don't output binary diffs"
                    },
                    {
                        "name": "--binary",
                        "description": "opposite of --no-binary"
                    },
                    {
                        "name": "--zero-commit",
                        "description": "output all-zero hash in From header",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ignore-if-in-upstream",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "don't include a patch matching a commit upstream"
                    },
                    {
                        "name": "--no-stat",
                        "aliases": [
                            "-p"
                        ],
                        "description": "show patch format instead of default (patch + stat)"
                    },
                    {
                        "name": "--add-header",
                        "arguments": [
                            {
                                "name": "header",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "add email header"
                    },
                    {
                        "name": "--to",
                        "arguments": [
                            {
                                "name": "email",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "description": "add To: header",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--cc",
                        "arguments": [
                            {
                                "name": "email",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "description": "add Cc: header",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--from",
                        "arguments": [
                            {
                                "name": "ident",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "description": "set From address to <ident> (or committer ident if absent)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--in-reply-to",
                        "arguments": [
                            {
                                "name": "message-id",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "make first mail a reply to <message-id>"
                    },
                    {
                        "name": "--attach",
                        "arguments": [
                            {
                                "name": "boundary",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "attach the patch"
                    },
                    {
                        "name": "--inline",
                        "arguments": [
                            {
                                "name": "boundary",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "description": "inline the patch"
                    },
                    {
                        "name": "--thread",
                        "arguments": [
                            {
                                "name": "style",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "enable message threading, styles: shallow, deep"
                    },
                    {
                        "name": "--signature",
                        "arguments": [
                            {
                                "name": "signature",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "add a signature"
                    },
                    {
                        "name": "--base",
                        "arguments": [
                            {
                                "name": "base-commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "add prerequisite tree info to the patch series"
                    },
                    {
                        "name": "--signature-file",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "add a signature from a file"
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "group": "Messaging",
                        "description": "don't print the patch filenames",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--progress",
                        "group": "Messaging",
                        "description": "show progress while generating patches",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--interdiff",
                        "arguments": [
                            {
                                "name": "rev",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show changes against <rev> in cover letter or single patch"
                    },
                    {
                        "name": "--range-diff",
                        "arguments": [
                            {
                                "name": "refspec",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show changes against <refspec> in cover letter or single patch"
                    },
                    {
                        "name": "--creation-factor",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Messaging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "percentage by which creation is weighted"
                    },
                    {
                        "name": "--force-in-body-from",
                        "group": "Messaging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show in-body From: even if identical to the e-mail header"
                    },
                    {
                        "name": "--unified",
                        "aliases": [
                            "-U"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate diffs with <n> lines of context instead of the usual three.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output to a specific file instead of stdout.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output-indicator-new",
                        "aliases": [
                            "--output-indicator-old",
                            "--output-indicator-context"
                        ],
                        "arguments": [
                            {
                                "name": "char",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the character used to indicate new, old or context lines in the generated patch. Normally they are +, - and ' ' respectively.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--indent-heuristic",
                        "description": "Enable the heuristic that shifts diff hunk boundaries to make patches easier to read. This is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--minimal",
                        "description": "Spend extra time to make sure the smallest possible diff is produced.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patience",
                        "description": "Generate a diff using the \"patience diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--histogram",
                        "description": "Generate a diff using the \"histogram diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--anchored",
                        "arguments": [
                            {
                                "name": "text",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diff using the \"anchored diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-algorithm",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "patience",
                                    "minimal",
                                    "histogram",
                                    "myers"
                                ]
                            }
                        ],
                        "description": "Choose a diff algorithm. The variants are as follows:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stat",
                        "arguments": [
                            {
                                "name": "width[,name-width[,count]]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diffstat. By default, as much space as necessary will be used for the filename part, and the rest for the graph part. Maximum width defaults to terminal width, or 80 columns if not connected to a terminal, and can be overridden by <width>. The width of the filename part can be limited by giving another width <name-width> after a comma or by setting diff.statNameWidth=<name-width>. The width of the graph part can be limited by using --stat-graph-width=<graph-width> or by setting diff.statGraphWidth=<graph-width>. Using --stat or --stat-graph-width affects all commands generating a stat graph, while setting diff.statNameWidth or diff.statGraphWidth does not affect git format-patch. By giving a third parameter <count>, you can limit the output to the first <count> lines, followed by ... if there are more.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--compact-summary",
                        "description": "Output a condensed summary of extended header information such as file creations or deletions (\"new\" or \"gone\", optionally +l if it's a symlink) and mode changes (+x or -x for adding or removing executable bit respectively) in diffstat. The information is put between the filename part and the graph part. Implies --stat.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--numstat",
                        "description": "Similar to --stat, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two - instead of saying 0 0.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--shortstat",
                        "description": "Output only the last line of the --stat format containing total number of modified files, as well as number of added and deleted lines.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output the distribution of relative amount of changes for each sub-directory. The behavior of --dirstat can be customized by passing it a comma separated list of parameters. The defaults are controlled by the diff.dirstat configuration variable (see git-config(1)). The following parameters are available:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cumulative",
                        "description": "Synonym for --dirstat=cumulative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat-by-file",
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Synonym for --dirstat=files,<param>,....",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--summary",
                        "description": "Output a condensed summary of extended header information such as creations, renames and mode changes.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-renames",
                        "description": "Turn off rename detection, even when the configuration file gives the default to do so.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--rename-empty",
                        "description": "Whether to use empty blobs as rename source.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--full-index",
                        "description": "Instead of the first handful of characters, show the full pre- and post-image blob object names on the \"index\" line when generating patch format output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header lines, show the shortest prefix that is at least <n> hexdigits long that uniquely refers the object. In diff-patch output format, --full-index takes higher precedence, i.e. if --full-index is specified, full blob names will be shown regardless of --abbrev. Non default number of digits can be specified with --abbrev=<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--break-rewrites",
                        "aliases": [
                            "-B"
                        ],
                        "arguments": [
                            {
                                "name": "[n][/m]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Break complete rewrite changes into pairs of delete and create. This serves two purposes:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-renames",
                        "aliases": [
                            "-M"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Detect renames. If <n> is specified, it is a threshold on the similarity index (i.e. amount of addition/deletions compared to the file's size). For example, -M90% means Git should consider a delete/add pair to be a rename if more than 90% of the file hasn't changed. Without a % sign, the number is to be read as a fraction, with a decimal point before it. I.e., -M5 becomes 0.5, and is thus the same as -M50%. Similarly, -M05 is the same as -M5%. To limit detection to exact renames, use -M100%. The default similarity index is 50%.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies",
                        "aliases": [
                            "-C"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Detect copies as well as renames. See also --find-copies-harder. If <n> is specified, it has the same meaning as for -M<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies-harder",
                        "description": "For performance reasons, by default, -C option finds copies only if the original file of the copy was modified in the same changeset. This flag makes the command inspect unmodified files as candidates for the source of copy. This is a very expensive operation for large projects, so use it with caution. Giving more than one -C option has the same effect.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--irreversible-delete",
                        "aliases": [
                            "-D"
                        ],
                        "description": "Omit the preimage for deletes, i.e. print only the header but not the diff between the preimage and /dev/null. The resulting patch is not meant to be applied with patch or git apply; this is solely for people who want to just concentrate on reviewing the text after the change. In addition, the output obviously lacks enough information to apply such a patch in reverse, even manually, hence the name of the option.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-l",
                        "arguments": [
                            {
                                "name": "num",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "The -M and -C options involve some preliminary steps that can detect subsets of renames/copies cheaply, followed by an exhaustive fallback portion that compares all remaining unpaired destinations to all relevant sources. (For renames, only remaining unpaired sources are relevant; for copies, all original sources are relevant.) For N sources and destinations, this exhaustive check is O(N^2). This option prevents the exhaustive portion of rename/copy detection from running if the number of source/destination files involved exceeds the specified number. Defaults to diff.renameLimit. Note that a value of 0 is treated as unlimited.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-O",
                        "arguments": [
                            {
                                "name": "orderfile",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Control the order in which files appear in the output. This overrides the diff.orderFile configuration variable (see git-config(1)). To cancel diff.orderFile, use -O/dev/null.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--skip-to",
                        "aliases": [
                            "--rotate-to"
                        ],
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Discard the files before the named <file> from the output (i.e. skip to), or move them to the end of the output (i.e. rotate to). These options were invented primarily for the use of the git difftool command, and may not be very useful otherwise.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--relative",
                        "aliases": [
                            "--no-relative"
                        ],
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. --no-relative can be used to countermand both diff.relative config option and previous --relative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--text",
                        "aliases": [
                            "-a"
                        ],
                        "description": "Treat all files as text.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-cr-at-eol",
                        "description": "Ignore carriage-return at the end of line when doing a comparison.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-at-eol",
                        "description": "Ignore changes in whitespace at EOL.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-change",
                        "aliases": [
                            "-b"
                        ],
                        "description": "Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-all-space",
                        "aliases": [
                            "-w"
                        ],
                        "description": "Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-blank-lines",
                        "description": "Ignore changes whose lines are all blank.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-matching-lines",
                        "aliases": [
                            "-I"
                        ],
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Ignore changes whose all lines match <regex>. This option may be specified more than once.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--inter-hunk-context",
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the context between diff hunks, up to the specified <number> of lines, thereby fusing hunks that are close to each other. Defaults to diff.interHunkContext or 0 if the config option is unset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--function-context",
                        "aliases": [
                            "-W"
                        ],
                        "description": "Show whole function as context lines for each change. The function names are determined in the same way as git diff works out patch hunk headers (see \"Defining a custom hunk-header\" in gitattributes(5)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ext-diff",
                        "description": "Allow an external diff helper to be executed. If you set an external diff driver with gitattributes(5), you need to use this option with git-log(1) and friends.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--textconv",
                        "aliases": [
                            "--no-textconv"
                        ],
                        "description": "Allow (or disallow) external text conversion filters to be run when comparing binary files. See gitattributes(5) for details. Because textconv filters are typically a one-way conversion, the resulting diff is suitable for human consumption, but cannot be applied. For this reason, textconv filters are enabled by default only for git-diff(1) and git-log(1), but not for git-format-patch(1) or diff plumbing commands.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-submodules",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "none",
                                    "untracked",
                                    "dirty",
                                    "all"
                                ]
                            }
                        ],
                        "description": "Ignore changes to submodules in the diff generation. all is the default. Using none will consider the submodule modified when it either contains untracked or modified files or its HEAD differs from the commit recorded in the superproject and can be used to override any settings of the ignore option in git-config(1) or gitmodules(5). When untracked is used submodules are not considered dirty when they only contain untracked content (but they are still scanned for modified content). Using dirty ignores all changes to the work tree of submodules, only changes to the commits stored in the superproject are shown (this was the behavior until 1.7.0). Using all hides all changes to submodules.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--src-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given source <prefix> instead of \"a/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dst-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given destination <prefix> instead of \"b/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-prefix",
                        "description": "Do not show any source or destination prefix.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--default-prefix",
                        "description": "Use the default source and destination prefixes (\"a/\" and \"b/\"). This overrides configuration variables such as diff.noprefix, diff.srcPrefix, diff.dstPrefix, and diff.mnemonicPrefix (see git-config(1)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--line-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Prepend an additional <prefix> to every line of output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ita-invisible-in-index",
                        "description": "By default entries added by git add -N appear as an existing empty file in git diff and a new file in git diff --cached. This option makes the entry appear as a new file in git diff and non-existent in git diff --cached. This option could be reverted with --ita-visible-in-index. Both options are experimental and could be removed in future.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--always",
                        "description": "Include patches for commits that do not introduce any change, which are omitted by default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--encode-email-headers",
                        "aliases": [
                            "--no-encode-email-headers"
                        ],
                        "description": "Encode email headers that have non-ASCII characters with \"Q-encoding\" (described in RFC 2047), instead of outputting the headers verbatim. Defaults to the value of the format.encodeEmailHeaders configuration variable.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--notes",
                        "aliases": [
                            "--no-notes"
                        ],
                        "arguments": [
                            {
                                "name": "ref",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Append the notes (see git-notes(1)) for the commit after the three-dash line.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--root",
                        "description": "Treat the revision argument as a <revision-range>, even if it is just a single commit (that would normally be treated as a <since>). Note that root commits included in the specified range are always formatted as creation patches, independently of this flag.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git format-patch [<options>] [<since> | <revision-range>]"
                        ]
                    }
                ]
            },
            {
                "name": "gc",
                "description": "Cleanup unnecessary files and optimize the local repository",
                "options": [
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "suppress progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--prune",
                        "arguments": [
                            {
                                "name": "date",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "prune unreferenced objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--cruft",
                        "description": "pack unreferenced objects separately",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--max-cruft-size",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "with --cruft, limit the size of new cruft packs"
                    },
                    {
                        "name": "--aggressive",
                        "description": "be more thorough (increased runtime)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--auto",
                        "description": "enable auto-gc mode",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--detach",
                        "description": "perform garbage collection in the background",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--force",
                        "description": "force running gc even if there may be another gc running",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--keep-largest-pack",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "repack all other packs except the largest pack"
                    },
                    {
                        "name": "--expire-to",
                        "arguments": [
                            {
                                "name": "dir",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "pack prefix to store a pack containing pruned objects"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git gc [<options>]"
                        ]
                    }
                ]
            },
            {
                "name": "grep",
                "description": "Print lines matching a pattern",
                "arguments": [
                    {
                        "name": "pattern",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "rev",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "path",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--cached",
                        "description": "search in index instead of in the work tree",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-index",
                        "description": "find in contents not managed by git"
                    },
                    {
                        "name": "--index",
                        "description": "opposite of --no-index"
                    },
                    {
                        "name": "--untracked",
                        "description": "search in both tracked and untracked files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--exclude-standard",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore files specified via '.gitignore'"
                    },
                    {
                        "name": "--recurse-submodules",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "recursively search in each submodule"
                    },
                    {
                        "name": "--invert-match",
                        "aliases": [
                            "-v"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show non-matching lines"
                    },
                    {
                        "name": "--ignore-case",
                        "aliases": [
                            "-i"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "case insensitive matching"
                    },
                    {
                        "name": "--word-regexp",
                        "aliases": [
                            "-w"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "match patterns only at word boundaries"
                    },
                    {
                        "name": "--text",
                        "aliases": [
                            "-a"
                        ],
                        "description": "process binary files as text",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-I",
                        "description": "don't match patterns in binary files"
                    },
                    {
                        "name": "--textconv",
                        "description": "process binary files with textconv filters",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--recursive",
                        "aliases": [
                            "-r"
                        ],
                        "description": "search in subdirectories (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--max-depth",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "descend at most <n> levels"
                    },
                    {
                        "name": "--extended-regexp",
                        "aliases": [
                            "-E"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use extended POSIX regular expressions"
                    },
                    {
                        "name": "--basic-regexp",
                        "aliases": [
                            "-G"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use basic POSIX regular expressions (default)"
                    },
                    {
                        "name": "--fixed-strings",
                        "aliases": [
                            "-F"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "interpret patterns as fixed strings"
                    },
                    {
                        "name": "--perl-regexp",
                        "aliases": [
                            "-P"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use Perl-compatible regular expressions"
                    },
                    {
                        "name": "--line-number",
                        "aliases": [
                            "-n"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show line numbers"
                    },
                    {
                        "name": "--column",
                        "description": "show column number of first match",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-h",
                        "description": "don't show filenames"
                    },
                    {
                        "name": "-H",
                        "description": "show filenames"
                    },
                    {
                        "name": "--full-name",
                        "description": "show filenames relative to top directory",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--files-with-matches",
                        "aliases": [
                            "-l"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show only filenames instead of matching lines"
                    },
                    {
                        "name": "--name-only",
                        "description": "synonym for --files-with-matches",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--files-without-match",
                        "aliases": [
                            "-L"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show only the names of files without match"
                    },
                    {
                        "name": "--null",
                        "aliases": [
                            "-z"
                        ],
                        "description": "print NUL after filenames",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--only-matching",
                        "aliases": [
                            "-o"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show only matching parts of a line"
                    },
                    {
                        "name": "--count",
                        "aliases": [
                            "-c"
                        ],
                        "description": "show the number of matches instead of matching lines",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--color",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "highlight matches",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--break",
                        "description": "print empty line between matches from different files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--heading",
                        "description": "show filename only once above matches from same file",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--context",
                        "aliases": [
                            "-C"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show <n> context lines before and after matches"
                    },
                    {
                        "name": "--before-context",
                        "aliases": [
                            "-B"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "show <n> context lines before matches"
                    },
                    {
                        "name": "--after-context",
                        "aliases": [
                            "-A"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "show <n> context lines after matches"
                    },
                    {
                        "name": "--threads",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "use <n> worker threads",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-NUM",
                        "description": "shortcut for -C NUM"
                    },
                    {
                        "name": "--show-function",
                        "aliases": [
                            "-p"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show a line with the function name before matches"
                    },
                    {
                        "name": "--function-context",
                        "aliases": [
                            "-W"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show the surrounding function"
                    },
                    {
                        "name": "-f",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "read patterns from file"
                    },
                    {
                        "name": "-e",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "match <pattern>"
                    },
                    {
                        "name": "--and",
                        "description": "combine patterns specified with -e"
                    },
                    {
                        "name": "--or"
                    },
                    {
                        "name": "--not"
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "indicate hit with exit status without output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--all-match",
                        "description": "show only matches from files that match all patterns",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--open-files-in-pager",
                        "aliases": [
                            "-O"
                        ],
                        "arguments": [
                            {
                                "name": "pager",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show matching files in the pager"
                    },
                    {
                        "name": "--ext-grep",
                        "description": "allow calling of grep(1) (ignored by this build)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--max-count",
                        "aliases": [
                            "-m"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "maximum number of results per file"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
                        ]
                    }
                ]
            },
            {
                "name": "init",
                "description": "Create an empty Git repository or reinitialize an existing one",
                "arguments": [
                    {
                        "name": "directory",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--template",
                        "arguments": [
                            {
                                "name": "template-directory",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "directory from which templates will be used"
                    },
                    {
                        "name": "--bare",
                        "description": "create a bare repository",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--shared",
                        "arguments": [
                            {
                                "name": "permissions",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "specify that the git repository is to be shared amongst several users"
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be quiet",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--separate-git-dir",
                        "arguments": [
                            {
                                "name": "gitdir",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "separate git dir from working tree"
                    },
                    {
                        "name": "--initial-branch",
                        "aliases": [
                            "-b"
                        ],
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "override the name of the initial branch"
                    },
                    {
                        "name": "--object-format",
                        "arguments": [
                            {
                                "name": "hash",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "specify the hash algorithm to use"
                    },
                    {
                        "name": "--ref-format",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "specify the reference format to use"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--separate-git-dir <git-dir>] [--object-format=<format>] [--ref-format=<format>] [-b <branch-name> | --initial-branch=<branch-name>] [--shared[=<permissions>]] [<directory>]"
                        ]
                    }
                ]
            },
            {
                "name": "log",
                "description": "Show commit logs",
                "arguments": [
                    {
                        "name": "revision-range",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "path",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "suppress diff output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--source",
                        "description": "show source",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--use-mailmap",
                        "description": "use mail map file",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--mailmap",
                        "description": "alias of --use-mailmap",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--clear-decorations",
                        "description": "clear all previously-defined decoration filters"
                    },
                    {
                        "name": "--decorate-refs",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "only decorate refs that match <pattern>"
                    },
                    {
                        "name": "--decorate-refs-exclude",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "do not decorate refs that match <pattern>"
                    },
                    {
                        "name": "--decorate",
                        "arguments": [
                            {
                                "name": "...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "decorate options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-L",
                        "arguments": [
                            {
                                "name": "range:file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "trace the evolution of line range <start>,<end> or function :<funcname> in <file>"
                    },
                    {
                        "name": "--follow",
                        "description": "Continue listing the history of a file beyond renames (works only for a single file).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--full-diff",
                        "description": "Without this flag, git log -p <path>... shows commits that touch the specified paths, and diffs about the same specified paths. With this, the full diff is shown for commits that touch the specified paths; this means that \"<path>...\" limits only commits, and doesn't limit diff for those commits.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--log-size",
                        "description": "Include a line log size <number> in the output for each commit, where <number> is the length of that commit's message in bytes. Intended to speed up tools that read log messages from git log output by allowing them to allocate space in advance.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--max-count",
                        "aliases": [
                            "-n"
                        ],
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit the output to <number> commits.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--skip",
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Skip <number> commits before starting to show the commit output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--since",
                        "aliases": [
                            "--after"
                        ],
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show commits more recent than <date>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--since-as-filter",
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show all commits more recent than <date>. This visits all commits in the range, rather than stopping at the first commit which is older than <date>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--until",
                        "aliases": [
                            "--before"
                        ],
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show commits older than <date>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--author",
                        "aliases": [
                            "--committer"
                        ],
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit the commits output to ones with author/committer header lines that match the <pattern> regular expression. With more than one --author=<pattern>, commits whose author matches any of the <pattern> are chosen (similarly for multiple --committer=<pattern>).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--grep-reflog",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit the commits output to ones with reflog entries that match the <pattern> regular expression. With more than one --grep-reflog, commits whose reflog message matches any of the given patterns are chosen. It is an error to use this option unless --walk-reflogs is in use.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--grep",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit the commits output to ones with a log message that matches the <pattern> regular expression. With more than one --grep=<pattern>, commits whose message matches any of the <pattern> are chosen (but see --all-match).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--all-match",
                        "description": "Limit the commits output to ones that match all given --grep, instead of ones that match at least one.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--invert-grep",
                        "description": "Limit the commits output to ones with a log message that do not match the <pattern> specified with --grep=<pattern>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--regexp-ignore-case",
                        "aliases": [
                            "-i"
                        ],
                        "description": "Match the regular expression limiting patterns without regard to letter case.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--basic-regexp",
                        "description": "Consider the limiting patterns to be basic regular expressions; this is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--extended-regexp",
                        "aliases": [
                            "-E"
                        ],
                        "description": "Consider the limiting patterns to be extended regular expressions instead of the default basic regular expressions.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--fixed-strings",
                        "aliases": [
                            "-F"
                        ],
                        "description": "Consider the limiting patterns to be fixed strings (don't interpret pattern as a regular expression).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--perl-regexp",
                        "aliases": [
                            "-P"
                        ],
                        "description": "Consider the limiting patterns to be Perl-compatible regular expressions.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--remove-empty",
                        "description": "Stop when a given path disappears from the tree.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--merges",
                        "description": "Print only merge commits. This is exactly the same as --min-parents=2.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--min-parents",
                        "aliases": [
                            "--max-parents",
                            "--no-min-parents",
                            "--no-max-parents"
                        ],
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show only commits which have at least (or at most) that many parent commits. In particular, --max-parents=1 is the same as --no-merges, --min-parents=2 is the same as --merges. --max-parents=0 gives all root commits and --min-parents=3 all octopus merges.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--first-parent",
                        "description": "When finding commits to include, follow only the first parent commit upon seeing a merge commit. This option can give a better overview when viewing the evolution of a particular topic branch, because merges into a topic branch tend to be only about adjusting to updated upstream from time to time, and this option allows you to ignore the individual commits brought in to your history by such a merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude-first-parent-only",
                        "description": "When finding commits to exclude (with a ^), follow only the first parent commit upon seeing a merge commit. This can be used to find the set of changes in a topic branch from the point where it diverged from the remote branch, given that arbitrary merges can be valid topic branch changes.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--not",
                        "description": "Reverses the meaning of the ^ prefix (or lack thereof) for all following revision specifiers, up to the next --not. When used on the command line before --stdin, the revisions passed through stdin will not be affected by it. Conversely, when passed via standard input, the revisions passed on the command line will not be affected by it.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--all",
                        "description": "Pretend as if all the refs in refs/, along with HEAD, are listed on the command line as <commit>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--branches",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretend as if all the refs in refs/heads are listed on the command line as <commit>. If <pattern> is given, limit branches to ones matching given shell glob. If <pattern> lacks ?, *, or [, /* at the end is implied.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--tags",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretend as if all the refs in refs/tags are listed on the command line as <commit>. If <pattern> is given, limit tags to ones matching given shell glob. If pattern lacks ?, *, or [, /* at the end is implied.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--remotes",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretend as if all the refs in refs/remotes are listed on the command line as <commit>. If <pattern> is given, limit remote-tracking branches to ones matching given shell glob. If pattern lacks ?, *, or [, /* at the end is implied.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--glob",
                        "arguments": [
                            {
                                "name": "glob-pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretend as if all the refs matching shell glob <glob-pattern> are listed on the command line as <commit>. Leading refs/, is automatically prepended if missing. If pattern lacks ?, *, or [, /* at the end is implied.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude",
                        "arguments": [
                            {
                                "name": "glob-pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Do not include refs matching <glob-pattern> that the next --all, --branches, --tags, --remotes, or --glob would otherwise consider. Repetitions of this option accumulate exclusion patterns up to the next --all, --branches, --tags, --remotes, or --glob option (other options or arguments do not clear accumulated patterns).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude-hidden",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "fetch",
                                    "receive",
                                    "uploadpack"
                                ]
                            }
                        ],
                        "description": "Do not include refs that would be hidden by git-fetch, git-receive-pack or git-upload-pack by consulting the appropriate fetch.hideRefs, receive.hideRefs or uploadpack.hideRefs configuration along with transfer.hideRefs (see git-config(1)). This option affects the next pseudo-ref option --all or --glob and is cleared after processing them.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--reflog",
                        "description": "Pretend as if all objects mentioned by reflogs are listed on the command line as <commit>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--alternate-refs",
                        "description": "Pretend as if all objects mentioned as ref tips of alternate repositories were listed on the command line. An alternate repository is any repository whose object directory is specified in objects/info/alternates. The set of included objects may be modified by core.alternateRefsCommand, etc. See git-config(1).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--single-worktree",
                        "description": "By default, all working trees will be examined by the following options when there are more than one (see git-worktree(1)): --all, --reflog and --indexed-objects. This option forces them to examine the current working tree only.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-missing",
                        "description": "Upon seeing an invalid object name in the input, pretend as if the bad input was not given.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--bisect",
                        "description": "Pretend as if the bad bisection ref refs/bisect/bad was listed and as if it was followed by --not and the good bisection refs refs/bisect/good-* on the command line.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stdin",
                        "description": "In addition to getting arguments from the command line, read them from standard input as well. This accepts commits and pseudo-options like --all and --glob=. When a -- separator is seen, the following input is treated as paths and used to limit the result. Flags like --not which are read via standard input are only respected for arguments passed in the same way and will not influence any subsequent command line arguments.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cherry-mark",
                        "description": "Like --cherry-pick (see below) but mark equivalent commits with = rather than omitting them, and inequivalent ones with +.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cherry-pick",
                        "description": "Omit any commit that introduces the same change as another commit on the \"other side\" when the set of commits are limited with symmetric difference.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--left-only",
                        "aliases": [
                            "--right-only"
                        ],
                        "description": "List only commits on the respective side of a symmetric difference, i.e. only those which would be marked < resp. > by --left-right.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cherry",
                        "description": "A synonym for --right-only --cherry-mark --no-merges; useful to limit the output to the commits on our side and mark those that have been applied to the other side of a forked history with git log --cherry upstream...mybranch, similar to git cherry upstream mybranch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--walk-reflogs",
                        "aliases": [
                            "-g"
                        ],
                        "description": "Instead of walking the commit ancestry chain, walk reflog entries from the most recent one to older ones. When this option is used you cannot specify commits to exclude (that is, ^<commit>, <commit1>..<commit2>, and <commit1>...<commit2> notations cannot be used).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--merge",
                        "description": "Show commits touching conflicted paths in the range HEAD...<other>, where <other> is the first existing pseudoref in MERGE_HEAD, CHERRY_PICK_HEAD, REVERT_HEAD or REBASE_HEAD. Only works when the index has unmerged entries. This option can be used to show relevant commits when resolving conflicts from a 3-way merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--boundary",
                        "description": "Output excluded boundary commits. Boundary commits are prefixed with -.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--simplify-by-decoration",
                        "description": "Commits that are referred by some branch or tag are selected.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-pulls",
                        "description": "Include all commits from the default mode, but also any merge commits that are not TREESAME to the first parent but are TREESAME to a later parent. This mode is helpful for showing the merge commits that \"first introduced\" a change to a branch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--full-history",
                        "description": "Same as the default mode, but does not prune some history.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dense",
                        "description": "Only the selected commits are shown, plus some to have a meaningful history.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--sparse",
                        "description": "All commits in the simplified history are shown.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--simplify-merges",
                        "description": "Additional option to --full-history to remove some needless merges from the resulting history, as there are no selected commits contributing to this merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ancestry-path",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When given a range of commits to display (e.g. <commit1>..<commit2> or <commit2> ^<commit1>), and a commit <commit> in that range, only display commits in that range that are ancestors of <commit>, descendants of <commit>, or <commit> itself. If no commit is specified, use <commit1> (the excluded part of the range) as <commit>. Can be passed multiple times; if so, a commit is included if it is any of the commits given or if it is an ancestor or descendant of one of them.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--date-order",
                        "description": "Show no parents before all of its children are shown, but otherwise show commits in the commit timestamp order.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--author-date-order",
                        "description": "Show no parents before all of its children are shown, but otherwise show commits in the author timestamp order.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--topo-order",
                        "description": "Show no parents before all of its children are shown, and avoid showing commits on multiple lines of history intermixed.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--reverse",
                        "description": "Output the commits chosen to be shown (see Commit Limiting section above) in reverse order. Cannot be combined with --walk-reflogs.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-walk",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "sorted",
                                    "unsorted"
                                ]
                            }
                        ],
                        "description": "Only show the given commits, but do not traverse their ancestors. This has no effect if a range is specified. If the argument unsorted is given, the commits are shown in the order they were given on the command line. Otherwise (if sorted or no argument was given), the commits are shown in reverse chronological order by commit time. Cannot be combined with --graph.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--do-walk",
                        "description": "Overrides a previous --no-walk.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pretty",
                        "aliases": [
                            "--format"
                        ],
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretty-print the contents of the commit logs in a given format, where <format> can be one of oneline, short, medium, full, fuller, reference, email, raw, format:<string> and tformat:<string>. When <format> is none of the above, and has %<placeholder> in it, it acts as if --pretty=tformat:<format> were given.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--abbrev-commit",
                        "description": "Instead of showing the full 40-byte hexadecimal commit object name, show a prefix that names the object uniquely. --abbrev=<n> (which also modifies diff output, if it is displayed) option can be used to specify the minimum length of the prefix.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--oneline",
                        "description": "This is a shorthand for --pretty=oneline --abbrev-commit used together.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--encoding",
                        "arguments": [
                            {
                                "name": "encoding",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Commit objects record the character encoding used for the log message in their encoding header; this option can be used to tell the command to re-code the commit log message in the encoding preferred by the user. For non plumbing commands this defaults to UTF-8. Note that if an object claims to be encoded in X and we are outputting in X, we will output the object verbatim; this means that invalid sequences in the original commit may be copied to the output. Likewise, if iconv(3) fails to convert the commit, we will quietly output the original object verbatim.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--expand-tabs",
                        "aliases": [
                            "--no-expand-tabs"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Perform a tab expansion (replace each tab with enough spaces to fill to the next display column that is a multiple of <n>) in the log message before showing it in the output. --expand-tabs is a short-hand for --expand-tabs=8, and --no-expand-tabs is a short-hand for --expand-tabs=0, which disables tab expansion.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--notes",
                        "arguments": [
                            {
                                "name": "ref",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the notes (see git-notes(1)) that annotate the commit, when showing the commit log message. This is the default for git log, git show and git whatchanged commands when there is no --pretty, --format, or --oneline option given on the command line.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-notes-by-default",
                        "description": "Show the default notes unless options for displaying specific notes are given.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-notes",
                        "aliases": [
                            "--standard-notes",
                            "--no-standard-notes"
                        ],
                        "arguments": [
                            {
                                "name": "ref",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "These options are deprecated. Use the above --notes/--no-notes options instead.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-signature",
                        "description": "Check the validity of a signed commit object by passing the signature to gpg --verify and show the output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--relative-date",
                        "description": "Synonym for --date=relative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--date",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Only takes effect for dates shown in human-readable format, such as when using --pretty. log.date config variable sets a default value for the log command's --date option. By default, dates are shown in the original time zone (either committer's or author's). If -local is appended to the format (e.g., iso-local), the user's local time zone is used instead.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--parents",
                        "description": "Print also the parents of the commit (in the form \"commit parent...\"). Also enables parent rewriting, see History Simplification above.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--children",
                        "description": "Print also the children of the commit (in the form \"commit child...\"). Also enables parent rewriting, see History Simplification above.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--left-right",
                        "description": "Mark which side of a symmetric difference a commit is reachable from. Commits from the left side are prefixed with < and those from the right with >. If combined with --boundary, those commits are prefixed with -.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--graph",
                        "description": "Draw a text-based graphical representation of the commit history on the left hand side of the output. This may cause extra lines to be printed in between commits, in order for the graph history to be drawn properly. Cannot be combined with --no-walk.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-linear-break",
                        "arguments": [
                            {
                                "name": "barrier",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When --graph is not used, all history branches are flattened which can make it hard to see that the two consecutive commits do not belong to a linear branch. This option puts a barrier in between them in that case. If <barrier> is specified, it is the string that will be shown instead of the default one.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch",
                        "aliases": [
                            "-p",
                            "-u"
                        ],
                        "description": "Generate patch (see the section called \"GENERATING PATCH TEXT WITH -P\").",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-m",
                        "description": "Show diffs for merge commits in the default format. This is similar to --diff-merges=on, except -m will produce no output unless -p is given as well.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-c",
                        "description": "Produce combined diff output for merge commits. Shortcut for --diff-merges=combined -p.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cc",
                        "description": "Produce dense combined diff output for merge commits. Shortcut for --diff-merges=dense-combined -p.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dd",
                        "description": "Produce diff with respect to first parent for both merge and regular commits. Shortcut for --diff-merges=first-parent -p.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--remerge-diff",
                        "description": "Produce remerge-diff output for merge commits. Shortcut for --diff-merges=remerge -p.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-diff-merges",
                        "description": "Synonym for --diff-merges=off.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-merges",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify diff format to be used for merge commits. Default is `off` unless --first-parent is in use, in which case first-parent is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--combined-all-paths",
                        "description": "Cause combined diffs (used for merge commits) to list the name of the file from all parents. It thus only has effect when --diff-merges=[dense-]combined is in use, and is likely only useful if filename changes are detected (i.e. when either rename or copy detection have been requested).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--unified",
                        "aliases": [
                            "-U"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate diffs with <n> lines of context instead of the usual three. Implies --patch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output to a specific file instead of stdout.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output-indicator-new",
                        "aliases": [
                            "--output-indicator-old",
                            "--output-indicator-context"
                        ],
                        "arguments": [
                            {
                                "name": "char",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the character used to indicate new, old or context lines in the generated patch. Normally they are +, - and ' ' respectively.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--raw",
                        "description": "For each commit, show a summary of changes using the raw diff format. See the \"RAW OUTPUT FORMAT\" section of git-diff(1). This is different from showing the log itself in raw format, which you can achieve with --format=raw.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch-with-raw",
                        "description": "Synonym for -p --raw.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-t",
                        "description": "Show the tree objects in the diff output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--indent-heuristic",
                        "description": "Enable the heuristic that shifts diff hunk boundaries to make patches easier to read. This is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--minimal",
                        "description": "Spend extra time to make sure the smallest possible diff is produced.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patience",
                        "description": "Generate a diff using the \"patience diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--histogram",
                        "description": "Generate a diff using the \"histogram diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--anchored",
                        "arguments": [
                            {
                                "name": "text",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diff using the \"anchored diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-algorithm",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "patience",
                                    "minimal",
                                    "histogram",
                                    "myers"
                                ]
                            }
                        ],
                        "description": "Choose a diff algorithm. The variants are as follows:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stat",
                        "arguments": [
                            {
                                "name": "width[,name-width[,count]]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diffstat. By default, as much space as necessary will be used for the filename part, and the rest for the graph part. Maximum width defaults to terminal width, or 80 columns if not connected to a terminal, and can be overridden by <width>. The width of the filename part can be limited by giving another width <name-width> after a comma or by setting diff.statNameWidth=<name-width>. The width of the graph part can be limited by using --stat-graph-width=<graph-width> or by setting diff.statGraphWidth=<graph-width>. Using --stat or --stat-graph-width affects all commands generating a stat graph, while setting diff.statNameWidth or diff.statGraphWidth does not affect git format-patch. By giving a third parameter <count>, you can limit the output to the first <count> lines, followed by ... if there are more.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--compact-summary",
                        "description": "Output a condensed summary of extended header information such as file creations or deletions (\"new\" or \"gone\", optionally +l if it's a symlink) and mode changes (+x or -x for adding or removing executable bit respectively) in diffstat. The information is put between the filename part and the graph part. Implies --stat.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--numstat",
                        "description": "Similar to --stat, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two - instead of saying 0 0.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--shortstat",
                        "description": "Output only the last line of the --stat format containing total number of modified files, as well as number of added and deleted lines.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output the distribution of relative amount of changes for each sub-directory. The behavior of --dirstat can be customized by passing it a comma separated list of parameters. The defaults are controlled by the diff.dirstat configuration variable (see git-config(1)). The following parameters are available:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cumulative",
                        "description": "Synonym for --dirstat=cumulative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat-by-file",
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Synonym for --dirstat=files,<param>,....",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--summary",
                        "description": "Output a condensed summary of extended header information such as creations, renames and mode changes.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch-with-stat",
                        "description": "Synonym for -p --stat.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-z",
                        "description": "Separate the commits with NULs instead of newlines.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--name-only",
                        "description": "Show only the name of each changed file in the post-image tree. The file names are often encoded in UTF-8. For more information see the discussion about encoding in the git-log(1) manual page.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--name-status",
                        "description": "Show only the name(s) and status of each changed file. See the description of the --diff-filter option on what the status letters mean. Just like --name-only the file names are often encoded in UTF-8.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--submodule",
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify how differences in submodules are shown. When specifying --submodule=short the short format is used. This format just shows the names of the commits at the beginning and end of the range. When --submodule or --submodule=log is specified, the log format is used. This format lists the commits in the range like git-submodule(1) summary does. When --submodule=diff is specified, the diff format is used. This format shows an inline diff of the changes in the submodule contents between the commit range. Defaults to diff.submodule or the short format if the config option is unset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show colored diff. --color (i.e. without =<when>) is the same as --color=always. <when> can be one of always, never, or auto.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-moved",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Moved lines of code are colored differently. The <mode> defaults to no if the option is not given and to zebra if the option with no mode is given. The mode must be one of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-moved-ws",
                        "arguments": [
                            {
                                "name": "mode,...",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This configures how whitespace is ignored when performing the move detection for --color-moved. These modes can be given as a comma separated list:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--word-diff",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "By default, words are delimited by whitespace; see --word-diff-regex below. The <mode> defaults to plain, and must be one of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--word-diff-regex",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Use <regex> to decide what a word is, instead of considering runs of non-whitespace to be a word. Also implies --word-diff unless it was already enabled.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-words",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Equivalent to --word-diff=color plus (if a regex was specified) --word-diff-regex=<regex>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-renames",
                        "description": "Turn off rename detection, even when the configuration file gives the default to do so.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--rename-empty",
                        "description": "Whether to use empty blobs as rename source.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--check",
                        "description": "Warn if changes introduce conflict markers or whitespace errors. What are considered whitespace errors is controlled by core.whitespace configuration. By default, trailing whitespaces (including lines that consist solely of whitespaces) and a space character that is immediately followed by a tab character inside the initial indent of the line are considered whitespace errors. Exits with non-zero status if problems are found. Not compatible with --exit-code.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ws-error-highlight",
                        "arguments": [
                            {
                                "name": "kind",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Highlight whitespace errors in the context, old or new lines of the diff. Multiple values are separated by comma, none resets previous values, default reset the list to new and all is a shorthand for old,new,context. When this option is not given, and the configuration variable diff.wsErrorHighlight is not set, only whitespace errors in new lines are highlighted. The whitespace errors are colored with color.diff.whitespace.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--full-index",
                        "description": "Instead of the first handful of characters, show the full pre- and post-image blob object names on the \"index\" line when generating patch format output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--binary",
                        "description": "In addition to --full-index, output a binary diff that can be applied with git-apply. Implies --patch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header lines, show the shortest prefix that is at least <n> hexdigits long that uniquely refers the object. In diff-patch output format, --full-index takes higher precedence, i.e. if --full-index is specified, full blob names will be shown regardless of --abbrev. Non default number of digits can be specified with --abbrev=<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--break-rewrites",
                        "aliases": [
                            "-B"
                        ],
                        "arguments": [
                            {
                                "name": "[n][/m]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Break complete rewrite changes into pairs of delete and create. This serves two purposes:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-renames",
                        "aliases": [
                            "-M"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "If generating diffs, detect and report renames for each commit. For following files across renames while traversing history, see --follow. If <n> is specified, it is a threshold on the similarity index (i.e. amount of addition/deletions compared to the file's size). For example, -M90% means Git should consider a delete/add pair to be a rename if more than 90% of the file hasn't changed. Without a % sign, the number is to be read as a fraction, with a decimal point before it. I.e., -M5 becomes 0.5, and is thus the same as -M50%. Similarly, -M05 is the same as -M5%. To limit detection to exact renames, use -M100%. The default similarity index is 50%.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies",
                        "aliases": [
                            "-C"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Detect copies as well as renames. See also --find-copies-harder. If <n> is specified, it has the same meaning as for -M<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies-harder",
                        "description": "For performance reasons, by default, -C option finds copies only if the original file of the copy was modified in the same changeset. This flag makes the command inspect unmodified files as candidates for the source of copy. This is a very expensive operation for large projects, so use it with caution. Giving more than one -C option has the same effect.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--irreversible-delete",
                        "aliases": [
                            "-D"
                        ],
                        "description": "Omit the preimage for deletes, i.e. print only the header but not the diff between the preimage and /dev/null. The resulting patch is not meant to be applied with patch or git apply; this is solely for people who want to just concentrate on reviewing the text after the change. In addition, the output obviously lacks enough information to apply such a patch in reverse, even manually, hence the name of the option.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-l",
                        "arguments": [
                            {
                                "name": "num",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "The -M and -C options involve some preliminary steps that can detect subsets of renames/copies cheaply, followed by an exhaustive fallback portion that compares all remaining unpaired destinations to all relevant sources. (For renames, only remaining unpaired sources are relevant; for copies, all original sources are relevant.) For N sources and destinations, this exhaustive check is O(N^2). This option prevents the exhaustive portion of rename/copy detection from running if the number of source/destination files involved exceeds the specified number. Defaults to diff.renameLimit. Note that a value of 0 is treated as unlimited.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-filter",
                        "arguments": [
                            {
                                "name": "[(A|C|D|M|R|T|U|X|B)...[*]]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (i.e. regular file, symlink, submodule, ...) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B). Any combination of the filter characters (including none) can be used. When * (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-S",
                        "arguments": [
                            {
                                "name": "string",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences that change the number of occurrences of the specified <string> (i.e. addition/deletion) in a file. Intended for the scripter's use.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-G",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences whose patch text contains added/removed lines that match <regex>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-object",
                        "arguments": [
                            {
                                "name": "object-id",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences that change the number of occurrences of the specified object. Similar to -S, just the argument is different in that it doesn't search for a specific string but for a specific object id.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pickaxe-all",
                        "description": "When -S or -G finds a change, show all the changes in that changeset, not just the files that contain the change in <string>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pickaxe-regex",
                        "description": "Treat the <string> given to -S as an extended POSIX regular expression to match.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-O",
                        "arguments": [
                            {
                                "name": "orderfile",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Control the order in which files appear in the output. This overrides the diff.orderFile configuration variable (see git-config(1)). To cancel diff.orderFile, use -O/dev/null.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--skip-to",
                        "aliases": [
                            "--rotate-to"
                        ],
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Discard the files before the named <file> from the output (i.e. skip to), or move them to the end of the output (i.e. rotate to). These options were invented primarily for the use of the git difftool command, and may not be very useful otherwise.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-R",
                        "description": "Swap two inputs; that is, show differences from index or on-disk file to tree contents.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--relative",
                        "aliases": [
                            "--no-relative"
                        ],
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. --no-relative can be used to countermand both diff.relative config option and previous --relative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--text",
                        "aliases": [
                            "-a"
                        ],
                        "description": "Treat all files as text.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-cr-at-eol",
                        "description": "Ignore carriage-return at the end of line when doing a comparison.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-at-eol",
                        "description": "Ignore changes in whitespace at EOL.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-change",
                        "aliases": [
                            "-b"
                        ],
                        "description": "Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-all-space",
                        "aliases": [
                            "-w"
                        ],
                        "description": "Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-blank-lines",
                        "description": "Ignore changes whose lines are all blank.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-matching-lines",
                        "aliases": [
                            "-I"
                        ],
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Ignore changes whose all lines match <regex>. This option may be specified more than once.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--inter-hunk-context",
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the context between diff hunks, up to the specified <number> of lines, thereby fusing hunks that are close to each other. Defaults to diff.interHunkContext or 0 if the config option is unset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--function-context",
                        "aliases": [
                            "-W"
                        ],
                        "description": "Show whole function as context lines for each change. The function names are determined in the same way as git diff works out patch hunk headers (see \"Defining a custom hunk-header\" in gitattributes(5)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ext-diff",
                        "description": "Allow an external diff helper to be executed. If you set an external diff driver with gitattributes(5), you need to use this option with git-log(1) and friends.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--textconv",
                        "aliases": [
                            "--no-textconv"
                        ],
                        "description": "Allow (or disallow) external text conversion filters to be run when comparing binary files. See gitattributes(5) for details. Because textconv filters are typically a one-way conversion, the resulting diff is suitable for human consumption, but cannot be applied. For this reason, textconv filters are enabled by default only for git-diff(1) and git-log(1), but not for git-format-patch(1) or diff plumbing commands.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-submodules",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "none",
                                    "untracked",
                                    "dirty",
                                    "all"
                                ]
                            }
                        ],
                        "description": "Ignore changes to submodules in the diff generation. all is the default. Using none will consider the submodule modified when it either contains untracked or modified files or its HEAD differs from the commit recorded in the superproject and can be used to override any settings of the ignore option in git-config(1) or gitmodules(5). When untracked is used submodules are not considered dirty when they only contain untracked content (but they are still scanned for modified content). Using dirty ignores all changes to the work tree of submodules, only changes to the commits stored in the superproject are shown (this was the behavior until 1.7.0). Using all hides all changes to submodules.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--src-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given source <prefix> instead of \"a/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dst-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given destination <prefix> instead of \"b/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-prefix",
                        "description": "Do not show any source or destination prefix.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--default-prefix",
                        "description": "Use the default source and destination prefixes (\"a/\" and \"b/\"). This overrides configuration variables such as diff.noprefix, diff.srcPrefix, diff.dstPrefix, and diff.mnemonicPrefix (see git-config(1)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--line-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Prepend an additional <prefix> to every line of output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ita-invisible-in-index",
                        "description": "By default entries added by git add -N appear as an existing empty file in git diff and a new file in git diff --cached. This option makes the entry appear as a new file in git diff and non-existent in git diff --cached. This option could be reverted with --ita-visible-in-index. Both options are experimental and could be removed in future.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git log [<options>] [<revision-range>] [[--] <path>...]"
                        ]
                    }
                ]
            },
            {
                "name": "maintenance",
                "description": "Run tasks to optimize Git repository data",
                "commands": [
                    {
                        "name": "run",
                        "description": "Run one or more maintenance tasks. If one or more --task options are specified, then those tasks are run in that order. Otherwise, the tasks are determined by which maintenance.<task>.enabled config options are true. By default, only maintenance.gc.enabled is true.",
                        "options": [
                            {
                                "name": "--auto",
                                "description": "run tasks based on the state of the repository",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--detach",
                                "description": "perform maintenance in the background",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--schedule",
                                "arguments": [
                                    {
                                        "name": "frequency",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "run tasks based on frequency"
                            },
                            {
                                "name": "--quiet",
                                "description": "do not report progress or other information over stderr",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--task",
                                "arguments": [
                                    {
                                        "name": "task",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "run a specific task"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": []
                            }
                        ]
                    },
                    {
                        "name": "start",
                        "description": "Start running maintenance on the current repository. This performs the same config updates as the register subcommand, then updates the background scheduler to run git maintenance run --scheduled on an hourly basis.",
                        "options": [
                            {
                                "name": "--scheduler",
                                "arguments": [
                                    {
                                        "name": "scheduler",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "scheduler to trigger git maintenance run"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": []
                            }
                        ]
                    },
                    {
                        "name": "stop",
                        "description": "Halt the background maintenance schedule. The current repository is not removed from the list of maintained repositories, in case the background maintenance is restarted later.",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": []
                            }
                        ]
                    },
                    {
                        "name": "register",
                        "description": "Initialize Git config values so any scheduled maintenance will start running on this repository. This adds the repository to the maintenance.repo config variable in the current user's global config, or the config specified by --config-file option, and enables some recommended configuration values for maintenance.<task>.schedule. The tasks that are enabled are safe for running in the background without disrupting foreground processes.",
                        "options": [
                            {
                                "name": "--config-file",
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "use given config file"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": []
                            }
                        ]
                    },
                    {
                        "name": "unregister",
                        "description": "Remove the current repository from background maintenance. This only removes the repository from the configured list. It does not stop the background maintenance processes from running.",
                        "options": [
                            {
                                "name": "--config-file",
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "use given config file"
                            },
                            {
                                "name": "--force",
                                "aliases": [
                                    "-f"
                                ],
                                "description": "return success even if repository was not registered",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": []
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git maintenance <subcommand> [<options>]"
                        ]
                    }
                ]
            },
            {
                "name": "merge",
                "description": "Join two or more development histories together",
                "arguments": [
                    {
                        "name": "commit",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-n",
                        "description": "do not show a diffstat at the end of the merge"
                    },
                    {
                        "name": "--stat",
                        "description": "show a diffstat at the end of the merge",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--summary",
                        "description": "(synonym to --stat)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--log",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "add (at most <n>) entries from shortlog to merge commit message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--squash",
                        "description": "create a single commit instead of doing a merge",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--commit",
                        "description": "perform a commit if the merge succeeds (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--edit",
                        "aliases": [
                            "-e"
                        ],
                        "description": "edit message before committing",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--cleanup",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "how to strip spaces and #comments from message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ff",
                        "description": "allow fast-forward (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ff-only",
                        "description": "abort if fast-forward is not possible"
                    },
                    {
                        "name": "--rerere-autoupdate",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "update the index with reused conflict resolution if possible"
                    },
                    {
                        "name": "--verify-signatures",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "verify that the named commit has a valid GPG signature"
                    },
                    {
                        "name": "--strategy",
                        "aliases": [
                            "-s"
                        ],
                        "arguments": [
                            {
                                "name": "strategy",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "merge strategy to use"
                    },
                    {
                        "name": "--strategy-option",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "option=value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "option for selected merge strategy"
                    },
                    {
                        "name": "--message",
                        "aliases": [
                            "-m"
                        ],
                        "arguments": [
                            {
                                "name": "message",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "merge commit message (for a non-fast-forward merge)"
                    },
                    {
                        "name": "--file",
                        "aliases": [
                            "-F"
                        ],
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "read message from file"
                    },
                    {
                        "name": "--into-name",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use <name> instead of the real target"
                    },
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be more verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be more quiet",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--abort",
                        "description": "abort the current in-progress merge",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quit",
                        "description": "--abort but leave index and working tree alone",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--continue",
                        "description": "continue the current in-progress merge",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--allow-unrelated-histories",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "allow merging unrelated histories"
                    },
                    {
                        "name": "--progress",
                        "description": "force progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--gpg-sign",
                        "aliases": [
                            "-S"
                        ],
                        "arguments": [
                            {
                                "name": "key-id",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "GPG sign commit"
                    },
                    {
                        "name": "--autostash",
                        "description": "automatically stash/stash pop before and after",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--overwrite-ignore",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "update ignored files (default)"
                    },
                    {
                        "name": "--signoff",
                        "description": "add a Signed-off-by trailer",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-verify",
                        "description": "bypass pre-merge-commit and commit-msg hooks"
                    },
                    {
                        "name": "--verify",
                        "description": "opposite of --no-verify"
                    },
                    {
                        "name": "--compact-summary",
                        "description": "Show a compact-summary at the end of the merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git merge [<options>] [<commit>...]",
                            "git merge --abort",
                            "git merge --continue"
                        ]
                    }
                ]
            },
            {
                "name": "mv",
                "description": "Move or rename a file, a directory, or a symlink",
                "arguments": [
                    {
                        "name": "source",
                        "required": true,
                        "arity": {
                            "minimum": 1
                        }
                    },
                    {
                        "name": "destination",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "destination-directory",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--dry-run",
                        "aliases": [
                            "-n"
                        ],
                        "description": "dry run",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "description": "force move/rename even if target exists",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-k",
                        "description": "skip move/rename errors"
                    },
                    {
                        "name": "--sparse",
                        "description": "allow updating entries outside of the sparse-checkout cone",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git mv [-v] [-f] [-n] [-k] <source> <destination>",
                            "git mv [-v] [-f] [-n] [-k] <source>... <destination-directory>"
                        ]
                    }
                ]
            },
            {
                "name": "notes",
                "description": "Add or inspect object notes",
                "options": [
                    {
                        "name": "--ref",
                        "arguments": [
                            {
                                "name": "notes-ref",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use notes from <notes-ref>"
                    }
                ],
                "commands": [
                    {
                        "name": "list",
                        "description": "List the notes object for a given object. If no object is given, show a list of all note objects and the objects they annotate (in the format \"<note-object> <annotated-object>\"). This is the default subcommand if no subcommand is given.",
                        "arguments": [
                            {
                                "name": "object",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git notes [--ref <notes-ref>] [list [<object>]]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "add",
                        "description": "Add notes for a given object (defaults to HEAD). Abort if the object already has notes (use -f to overwrite existing notes). However, if you're using add interactively (using an editor to supply the notes contents), then - instead of aborting - the existing notes will be opened in the editor (like the edit subcommand). If you specify multiple -m and -F, a blank line will be inserted between the messages. Use the --separator option to insert other delimiters. You can use -e to edit and fine-tune the message(s) supplied from -m and -F options interactively (using an editor) before adding the note.",
                        "arguments": [
                            {
                                "name": "object",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--message",
                                "aliases": [
                                    "-m"
                                ],
                                "arguments": [
                                    {
                                        "name": "message",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "note contents as a string"
                            },
                            {
                                "name": "--file",
                                "aliases": [
                                    "-F"
                                ],
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "note contents in a file"
                            },
                            {
                                "name": "--reedit-message",
                                "aliases": [
                                    "-c"
                                ],
                                "arguments": [
                                    {
                                        "name": "object",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "reuse and edit specified note object"
                            },
                            {
                                "name": "--edit",
                                "aliases": [
                                    "-e"
                                ],
                                "description": "edit note message in editor",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--reuse-message",
                                "aliases": [
                                    "-C"
                                ],
                                "arguments": [
                                    {
                                        "name": "object",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "reuse specified note object"
                            },
                            {
                                "name": "--allow-empty",
                                "description": "allow storing empty note",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--force",
                                "aliases": [
                                    "-f"
                                ],
                                "description": "replace existing notes",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--separator",
                                "arguments": [
                                    {
                                        "name": "paragraph-break",
                                        "required": false,
                                        "arity": {
                                            "minimum": 0,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "insert <paragraph-break> between paragraphs"
                            },
                            {
                                "name": "--stripspace",
                                "description": "remove unnecessary whitespace",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git notes [--ref <notes-ref>] add [-f] [--allow-empty] [--[no-]separator|--separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c | -C) <object>] [<object>] [-e]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "copy",
                        "description": "Copy the notes for the first object onto the second object (defaults to HEAD). Abort if the second object already has notes, or if the first object has none (use -f to overwrite existing notes to the second object). This subcommand is equivalent to: git notes add [-f] -C $(git notes list <from-object>) <to-object>",
                        "arguments": [
                            {
                                "name": "from-object",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            },
                            {
                                "name": "to-object",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--force",
                                "aliases": [
                                    "-f"
                                ],
                                "description": "replace existing notes",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--stdin",
                                "description": "read objects from stdin",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--for-rewrite",
                                "arguments": [
                                    {
                                        "name": "command",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "load rewriting config for <command> (implies --stdin)"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git notes [--ref <notes-ref>] copy [-f] <from-object> <to-object>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "append",
                        "description": "Append new message(s) given by -m or -F options to an existing note, or add them as a new note if one does not exist, for the object (defaults to HEAD). When appending to an existing note, a blank line is added before each new message as an inter-paragraph separator. The separator can be customized with the --separator option. Edit the notes to be appended given by -m and -F options with -e interactively (using an editor) before appending the note.",
                        "arguments": [
                            {
                                "name": "object",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--message",
                                "aliases": [
                                    "-m"
                                ],
                                "arguments": [
                                    {
                                        "name": "message",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "note contents as a string"
                            },
                            {
                                "name": "--file",
                                "aliases": [
                                    "-F"
                                ],
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "note contents in a file"
                            },
                            {
                                "name": "--reedit-message",
                                "aliases": [
                                    "-c"
                                ],
                                "arguments": [
                                    {
                                        "name": "object",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "reuse and edit specified note object"
                            },
                            {
                                "name": "--reuse-message",
                                "aliases": [
                                    "-C"
                                ],
                                "arguments": [
                                    {
                                        "name": "object",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "reuse specified note object"
                            },
                            {
                                "name": "--edit",
                                "aliases": [
                                    "-e"
                                ],
                                "description": "edit note message in editor",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--allow-empty",
                                "description": "allow storing empty note",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--separator",
                                "arguments": [
                                    {
                                        "name": "paragraph-break",
                                        "required": false,
                                        "arity": {
                                            "minimum": 0,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "insert <paragraph-break> between paragraphs"
                            },
                            {
                                "name": "--stripspace",
                                "description": "remove unnecessary whitespace",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git notes [--ref <notes-ref>] append [--allow-empty] [--[no-]separator|--separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c | -C) <object>] [<object>] [-e]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "edit",
                        "description": "Edit the notes for a given object (defaults to HEAD).",
                        "arguments": [
                            {
                                "name": "object",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--message",
                                "aliases": [
                                    "-m"
                                ],
                                "arguments": [
                                    {
                                        "name": "message",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "note contents as a string"
                            },
                            {
                                "name": "--file",
                                "aliases": [
                                    "-F"
                                ],
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "note contents in a file"
                            },
                            {
                                "name": "--reedit-message",
                                "aliases": [
                                    "-c"
                                ],
                                "arguments": [
                                    {
                                        "name": "object",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "reuse and edit specified note object"
                            },
                            {
                                "name": "--reuse-message",
                                "aliases": [
                                    "-C"
                                ],
                                "arguments": [
                                    {
                                        "name": "object",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "reuse specified note object"
                            },
                            {
                                "name": "--edit",
                                "aliases": [
                                    "-e"
                                ],
                                "description": "edit note message in editor",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--allow-empty",
                                "description": "allow storing empty note",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--separator",
                                "arguments": [
                                    {
                                        "name": "paragraph-break",
                                        "required": false,
                                        "arity": {
                                            "minimum": 0,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "insert <paragraph-break> between paragraphs"
                            },
                            {
                                "name": "--stripspace",
                                "description": "remove unnecessary whitespace",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git notes [--ref <notes-ref>] edit [--allow-empty] [<object>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "show",
                        "description": "Show the notes for a given object (defaults to HEAD).",
                        "arguments": [
                            {
                                "name": "object",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git notes [--ref <notes-ref>] show [<object>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "merge",
                        "description": "Merge the given notes ref into the current notes ref. This will try to merge the changes made by the given notes ref (called \"remote\") since the merge-base (if any) into the current notes ref (called \"local\").",
                        "arguments": [
                            {
                                "name": "notes-ref",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--verbose",
                                "aliases": [
                                    "-v"
                                ],
                                "group": "General options",
                                "description": "be more verbose",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--quiet",
                                "aliases": [
                                    "-q"
                                ],
                                "group": "General options",
                                "description": "be more quiet",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--strategy",
                                "aliases": [
                                    "-s"
                                ],
                                "arguments": [
                                    {
                                        "name": "strategy",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Merge options",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "resolve notes conflicts using the given strategy (manual/ours/theirs/union/cat_sort_uniq)"
                            },
                            {
                                "name": "--commit",
                                "group": "Committing unmerged notes",
                                "description": "finalize notes merge by committing unmerged notes"
                            },
                            {
                                "name": "--abort",
                                "group": "Aborting notes merge resolution",
                                "description": "abort notes merge"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git notes [--ref <notes-ref>] merge [-v | -q] [-s <strategy>] <notes-ref>",
                                    "git notes merge --commit [-v | -q]",
                                    "git notes merge --abort [-v | -q]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "remove",
                        "description": "Remove the notes for given objects (defaults to HEAD). When giving zero or one object from the command line, this is equivalent to specifying an empty note message to the edit subcommand.",
                        "arguments": [
                            {
                                "name": "object",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--ignore-missing",
                                "description": "attempt to remove non-existent note is not an error",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--stdin",
                                "description": "read object names from the standard input",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git notes [--ref <notes-ref>] remove [<object>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "prune",
                        "description": "Remove all notes for non-existing/unreachable objects.",
                        "options": [
                            {
                                "name": "--dry-run",
                                "aliases": [
                                    "-n"
                                ],
                                "description": "do not remove, show only",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--verbose",
                                "aliases": [
                                    "-v"
                                ],
                                "description": "report pruned notes",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git notes [--ref <notes-ref>] prune [-n] [-v]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "get-ref",
                        "description": "Print the current notes ref. This provides an easy way to retrieve the current notes ref (e.g. from scripts).",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git notes [--ref <notes-ref>] get-ref"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git notes [--ref <notes-ref>] [list [<object>]]",
                            "git notes [--ref <notes-ref>] add [-f] [--allow-empty] [--[no-]separator|--separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c | -C) <object>] [<object>] [-e]",
                            "git notes [--ref <notes-ref>] copy [-f] <from-object> <to-object>",
                            "git notes [--ref <notes-ref>] append [--allow-empty] [--[no-]separator|--separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c | -C) <object>] [<object>] [-e]",
                            "git notes [--ref <notes-ref>] edit [--allow-empty] [<object>]",
                            "git notes [--ref <notes-ref>] show [<object>]",
                            "git notes [--ref <notes-ref>] merge [-v | -q] [-s <strategy>] <notes-ref>",
                            "git notes merge --commit [-v | -q]",
                            "git notes merge --abort [-v | -q]",
                            "git notes [--ref <notes-ref>] remove [<object>...]",
                            "git notes [--ref <notes-ref>] prune [-n] [-v]",
                            "git notes [--ref <notes-ref>] get-ref"
                        ]
                    }
                ]
            },
            {
                "name": "pull",
                "description": "Fetch from and integrate with another repository or a local branch",
                "arguments": [
                    {
                        "name": "repository",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "refspec",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be more verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be more quiet",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--progress",
                        "description": "force progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--recurse-submodules",
                        "arguments": [
                            {
                                "name": "on-demand",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "control for recursive fetching of submodules"
                    },
                    {
                        "name": "--rebase",
                        "aliases": [
                            "-r"
                        ],
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "false",
                                    "true",
                                    "merges",
                                    "interactive"
                                ]
                            }
                        ],
                        "group": "Options related to merging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "incorporate changes by rebasing rather than merging"
                    },
                    {
                        "name": "-n",
                        "group": "Options related to merging",
                        "description": "do not show a diffstat at the end of the merge"
                    },
                    {
                        "name": "--stat",
                        "group": "Options related to merging",
                        "description": "show a diffstat at the end of the merge",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--log",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to merging",
                        "description": "add (at most <n>) entries from shortlog to merge commit message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--signoff",
                        "arguments": [
                            {
                                "name": "...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to merging",
                        "description": "add a Signed-off-by trailer",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--squash",
                        "group": "Options related to merging",
                        "description": "create a single commit instead of doing a merge",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--commit",
                        "group": "Options related to merging",
                        "description": "perform a commit if the merge succeeds (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--edit",
                        "group": "Options related to merging",
                        "description": "edit message before committing",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--cleanup",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to merging",
                        "description": "how to strip spaces and #comments from message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ff",
                        "group": "Options related to merging",
                        "description": "allow fast-forward",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ff-only",
                        "group": "Options related to merging",
                        "description": "abort if fast-forward is not possible"
                    },
                    {
                        "name": "--verify",
                        "group": "Options related to merging",
                        "description": "control use of pre-merge-commit and commit-msg hooks",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--verify-signatures",
                        "group": "Options related to merging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "verify that the named commit has a valid GPG signature"
                    },
                    {
                        "name": "--autostash",
                        "group": "Options related to merging",
                        "description": "automatically stash/stash pop before and after",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--strategy",
                        "aliases": [
                            "-s"
                        ],
                        "arguments": [
                            {
                                "name": "strategy",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to merging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "merge strategy to use"
                    },
                    {
                        "name": "--strategy-option",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "option=value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to merging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "option for selected merge strategy"
                    },
                    {
                        "name": "--gpg-sign",
                        "aliases": [
                            "-S"
                        ],
                        "arguments": [
                            {
                                "name": "key-id",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to merging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "GPG sign commit"
                    },
                    {
                        "name": "--allow-unrelated-histories",
                        "group": "Options related to merging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "allow merging unrelated histories"
                    },
                    {
                        "name": "--all",
                        "group": "Options related to fetching",
                        "description": "fetch from all remotes",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--append",
                        "aliases": [
                            "-a"
                        ],
                        "group": "Options related to fetching",
                        "description": "append to .git/FETCH_HEAD instead of overwriting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--upload-pack",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to fetching",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "path to upload pack on remote end"
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "group": "Options related to fetching",
                        "description": "force overwrite of local branch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--tags",
                        "aliases": [
                            "-t"
                        ],
                        "group": "Options related to fetching",
                        "description": "fetch all tags and associated objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--prune",
                        "aliases": [
                            "-p"
                        ],
                        "group": "Options related to fetching",
                        "description": "prune remote-tracking branches no longer on remote",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--jobs",
                        "aliases": [
                            "-j"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to fetching",
                        "description": "number of submodules pulled in parallel",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--dry-run",
                        "group": "Options related to fetching",
                        "description": "dry run",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--keep",
                        "aliases": [
                            "-k"
                        ],
                        "group": "Options related to fetching",
                        "description": "keep downloaded pack",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--depth",
                        "arguments": [
                            {
                                "name": "depth",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to fetching",
                        "description": "deepen history of shallow clone",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--shallow-since",
                        "arguments": [
                            {
                                "name": "time",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to fetching",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "deepen history of shallow repository based on time"
                    },
                    {
                        "name": "--shallow-exclude",
                        "arguments": [
                            {
                                "name": "ref",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to fetching",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "deepen history of shallow clone, excluding ref"
                    },
                    {
                        "name": "--deepen",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to fetching",
                        "description": "deepen history of shallow clone",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--unshallow",
                        "group": "Options related to fetching",
                        "description": "convert to a complete repository"
                    },
                    {
                        "name": "--update-shallow",
                        "group": "Options related to fetching",
                        "description": "accept refs that update .git/shallow",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--refmap",
                        "arguments": [
                            {
                                "name": "refmap",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to fetching",
                        "description": "specify fetch refmap"
                    },
                    {
                        "name": "--server-option",
                        "aliases": [
                            "-o"
                        ],
                        "arguments": [
                            {
                                "name": "server-specific",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to fetching",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "option to transmit"
                    },
                    {
                        "name": "--ipv4",
                        "aliases": [
                            "-4"
                        ],
                        "group": "Options related to fetching",
                        "description": "use IPv4 addresses only",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ipv6",
                        "aliases": [
                            "-6"
                        ],
                        "group": "Options related to fetching",
                        "description": "use IPv6 addresses only",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--negotiation-tip",
                        "arguments": [
                            {
                                "name": "revision",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Options related to fetching",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "report that we have only objects reachable from this object"
                    },
                    {
                        "name": "--show-forced-updates",
                        "group": "Options related to fetching",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "check for forced-updates on all updated branches"
                    },
                    {
                        "name": "--set-upstream",
                        "group": "Options related to fetching",
                        "description": "set upstream for git pull/fetch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--compact-summary",
                        "description": "Show a compact-summary at the end of the merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--summary",
                        "aliases": [
                            "--no-summary"
                        ],
                        "description": "Synonyms to --stat and --no-stat; these are deprecated and will be removed in the future.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--atomic",
                        "description": "Use an atomic transaction to update local refs. Either all refs are updated, or on error, no refs are updated.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--negotiate-only",
                        "description": "Do not fetch anything from the server, and instead print the ancestors of the provided --negotiation-tip=* arguments, which we have in common with the server.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--porcelain",
                        "description": "Print the output to standard output in an easy-to-parse format for scripts. See section OUTPUT in git-fetch(1) for details.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--prefetch",
                        "description": "Modify the configured refspec to place all refs into the refs/prefetch/ namespace. See the prefetch task in git-maintenance(1).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git pull [<options>] [<repository> [<refspec>...]]"
                        ]
                    }
                ]
            },
            {
                "name": "push",
                "description": "Update remote refs along with associated objects",
                "arguments": [
                    {
                        "name": "repository",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "refspec",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be more verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be more quiet",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--repo",
                        "arguments": [
                            {
                                "name": "repository",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "repository"
                    },
                    {
                        "name": "--all",
                        "description": "push all branches",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--branches",
                        "description": "alias of --all",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--mirror",
                        "description": "mirror all refs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--delete",
                        "aliases": [
                            "-d"
                        ],
                        "description": "delete refs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--tags",
                        "description": "push tags (can't be used with --all or --branches or --mirror)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--dry-run",
                        "aliases": [
                            "-n"
                        ],
                        "description": "dry run",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--porcelain",
                        "description": "machine-readable output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "description": "force updates",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--force-with-lease",
                        "arguments": [
                            {
                                "name": "refname:expect",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "require old value of ref to be at this value"
                    },
                    {
                        "name": "--force-if-includes",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "require remote updates to be integrated locally"
                    },
                    {
                        "name": "--recurse-submodules",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "check",
                                    "on-demand",
                                    "no"
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "control recursive pushing of submodules"
                    },
                    {
                        "name": "--thin",
                        "description": "use thin pack",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--receive-pack",
                        "arguments": [
                            {
                                "name": "receive-pack",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "receive pack program"
                    },
                    {
                        "name": "--exec",
                        "arguments": [
                            {
                                "name": "receive-pack",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "receive pack program"
                    },
                    {
                        "name": "--set-upstream",
                        "aliases": [
                            "-u"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "set upstream for git pull/status"
                    },
                    {
                        "name": "--progress",
                        "description": "force progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--prune",
                        "description": "prune locally removed refs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-verify",
                        "description": "bypass pre-push hook"
                    },
                    {
                        "name": "--verify",
                        "description": "opposite of --no-verify"
                    },
                    {
                        "name": "--follow-tags",
                        "description": "push missing but relevant tags",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--signed",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "yes",
                                    "no",
                                    "if-asked"
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "GPG sign the push"
                    },
                    {
                        "name": "--atomic",
                        "description": "request atomic transaction on remote side",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--push-option",
                        "aliases": [
                            "-o"
                        ],
                        "arguments": [
                            {
                                "name": "server-specific",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "option to transmit"
                    },
                    {
                        "name": "--ipv4",
                        "aliases": [
                            "-4"
                        ],
                        "description": "use IPv4 addresses only"
                    },
                    {
                        "name": "--ipv6",
                        "aliases": [
                            "-6"
                        ],
                        "description": "use IPv6 addresses only"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git push [<options>] [<repository> [<refspec>...]]"
                        ]
                    }
                ]
            },
            {
                "name": "range-diff",
                "description": "Compare two commit ranges (e.g. two versions of a branch)",
                "arguments": [
                    {
                        "name": "old-base..old-tip",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "new-base..new-tip",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "old-tip",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "new-tip",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "base",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--creation-factor",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "percentage by which creation is weighted"
                    },
                    {
                        "name": "--no-dual-color",
                        "description": "use simple diff colors"
                    },
                    {
                        "name": "--dual-color",
                        "description": "opposite of --no-dual-color"
                    },
                    {
                        "name": "--notes",
                        "arguments": [
                            {
                                "name": "notes",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "passed to 'git log'"
                    },
                    {
                        "name": "--diff-merges",
                        "arguments": [
                            {
                                "name": "style",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "passed to 'git log'"
                    },
                    {
                        "name": "--remerge-diff",
                        "description": "passed to 'git log'",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--left-only",
                        "description": "only emit output related to the first range",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--right-only",
                        "description": "only emit output related to the second range",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--patch",
                        "aliases": [
                            "-p"
                        ],
                        "group": "Diff output format options",
                        "description": "generate patch"
                    },
                    {
                        "name": "--no-patch",
                        "aliases": [
                            "-s"
                        ],
                        "group": "Diff output format options",
                        "description": "suppress diff output"
                    },
                    {
                        "name": "-u",
                        "group": "Diff output format options",
                        "description": "generate patch"
                    },
                    {
                        "name": "--unified",
                        "aliases": [
                            "-U"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "generate diffs with <n> lines context"
                    },
                    {
                        "name": "--function-context",
                        "aliases": [
                            "-W"
                        ],
                        "group": "Diff output format options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "generate diffs with <n> lines context"
                    },
                    {
                        "name": "--raw",
                        "group": "Diff output format options",
                        "description": "generate the diff in raw format"
                    },
                    {
                        "name": "--patch-with-raw",
                        "group": "Diff output format options",
                        "description": "synonym for '-p --raw'"
                    },
                    {
                        "name": "--patch-with-stat",
                        "group": "Diff output format options",
                        "description": "synonym for '-p --stat'"
                    },
                    {
                        "name": "--numstat",
                        "group": "Diff output format options",
                        "description": "machine friendly --stat"
                    },
                    {
                        "name": "--shortstat",
                        "group": "Diff output format options",
                        "description": "output only the last line of --stat"
                    },
                    {
                        "name": "--dirstat",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "param1,param2...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "output the distribution of relative amount of changes for each sub-directory"
                    },
                    {
                        "name": "--cumulative",
                        "group": "Diff output format options",
                        "description": "synonym for --dirstat=cumulative"
                    },
                    {
                        "name": "--dirstat-by-file",
                        "arguments": [
                            {
                                "name": "param1,param2...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "synonym for --dirstat=files,<param1>,<param2>..."
                    },
                    {
                        "name": "--check",
                        "group": "Diff output format options",
                        "description": "warn if changes introduce conflict markers or whitespace errors"
                    },
                    {
                        "name": "--summary",
                        "group": "Diff output format options",
                        "description": "condensed summary such as creations, renames and mode changes"
                    },
                    {
                        "name": "--name-only",
                        "group": "Diff output format options",
                        "description": "show only names of changed files"
                    },
                    {
                        "name": "--name-status",
                        "group": "Diff output format options",
                        "description": "show only names and status of changed files"
                    },
                    {
                        "name": "--stat",
                        "arguments": [
                            {
                                "name": "width[,name-width[,count]]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "generate diffstat"
                    },
                    {
                        "name": "--stat-width",
                        "arguments": [
                            {
                                "name": "width",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "generate diffstat with a given width"
                    },
                    {
                        "name": "--stat-name-width",
                        "arguments": [
                            {
                                "name": "width",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "generate diffstat with a given name width"
                    },
                    {
                        "name": "--stat-graph-width",
                        "arguments": [
                            {
                                "name": "width",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "generate diffstat with a given graph width"
                    },
                    {
                        "name": "--stat-count",
                        "arguments": [
                            {
                                "name": "count",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "generate diffstat with limited lines"
                    },
                    {
                        "name": "--compact-summary",
                        "group": "Diff output format options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "generate compact summary in diffstat"
                    },
                    {
                        "name": "--binary",
                        "group": "Diff output format options",
                        "description": "output a binary diff that can be applied"
                    },
                    {
                        "name": "--full-index",
                        "group": "Diff output format options",
                        "description": "show full pre- and post-image object names on the \"index\" lines",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--color",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "show colored diff",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ws-error-highlight",
                        "arguments": [
                            {
                                "name": "kind",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "highlight whitespace errors in the 'context', 'old' or 'new' lines in the diff"
                    },
                    {
                        "name": "-z",
                        "group": "Diff output format options",
                        "description": "do not munge pathnames and use NULs as output field terminators in --raw or --numstat"
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "use <n> digits to display object names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--src-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "show the given source prefix instead of \"a/\""
                    },
                    {
                        "name": "--dst-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "show the given destination prefix instead of \"b/\""
                    },
                    {
                        "name": "--line-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "prepend an additional prefix to every line of output"
                    },
                    {
                        "name": "--no-prefix",
                        "group": "Diff output format options",
                        "description": "do not show any source or destination prefix"
                    },
                    {
                        "name": "--default-prefix",
                        "group": "Diff output format options",
                        "description": "use default prefixes a/ and b/"
                    },
                    {
                        "name": "--inter-hunk-context",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "show context between diff hunks up to the specified number of lines"
                    },
                    {
                        "name": "--output-indicator-new",
                        "arguments": [
                            {
                                "name": "char",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "specify the character to indicate a new line instead of '+'"
                    },
                    {
                        "name": "--output-indicator-old",
                        "arguments": [
                            {
                                "name": "char",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "specify the character to indicate an old line instead of '-'"
                    },
                    {
                        "name": "--output-indicator-context",
                        "arguments": [
                            {
                                "name": "char",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "specify the character to indicate a context instead of ' '"
                    },
                    {
                        "name": "--break-rewrites",
                        "aliases": [
                            "-B"
                        ],
                        "arguments": [
                            {
                                "name": "n[/m]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff rename options",
                        "description": "break complete rewrite changes into pairs of delete and create"
                    },
                    {
                        "name": "--find-renames",
                        "aliases": [
                            "-M"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff rename options",
                        "description": "detect renames"
                    },
                    {
                        "name": "--irreversible-delete",
                        "aliases": [
                            "-D"
                        ],
                        "group": "Diff rename options",
                        "description": "omit the preimage for deletes"
                    },
                    {
                        "name": "--find-copies",
                        "aliases": [
                            "-C"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff rename options",
                        "description": "detect copies"
                    },
                    {
                        "name": "--find-copies-harder",
                        "group": "Diff rename options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use unmodified files as source to find copies"
                    },
                    {
                        "name": "--no-renames",
                        "group": "Diff rename options",
                        "description": "disable rename detection"
                    },
                    {
                        "name": "--rename-empty",
                        "group": "Diff rename options",
                        "description": "use empty blobs as rename source",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--follow",
                        "group": "Diff rename options",
                        "description": "continue listing the history of a file beyond renames",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-l",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff rename options",
                        "description": "prevent rename/copy detection if the number of rename/copy targets exceeds given limit"
                    },
                    {
                        "name": "--minimal",
                        "group": "Diff algorithm options",
                        "description": "produce the smallest possible diff"
                    },
                    {
                        "name": "--ignore-all-space",
                        "aliases": [
                            "-w"
                        ],
                        "group": "Diff algorithm options",
                        "description": "ignore whitespace when comparing lines"
                    },
                    {
                        "name": "--ignore-space-change",
                        "aliases": [
                            "-b"
                        ],
                        "group": "Diff algorithm options",
                        "description": "ignore changes in amount of whitespace"
                    },
                    {
                        "name": "--ignore-space-at-eol",
                        "group": "Diff algorithm options",
                        "description": "ignore changes in whitespace at EOL"
                    },
                    {
                        "name": "--ignore-cr-at-eol",
                        "group": "Diff algorithm options",
                        "description": "ignore carrier-return at the end of line"
                    },
                    {
                        "name": "--ignore-blank-lines",
                        "group": "Diff algorithm options",
                        "description": "ignore changes whose lines are all blank"
                    },
                    {
                        "name": "--ignore-matching-lines",
                        "aliases": [
                            "-I"
                        ],
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore changes whose all lines match <regex>"
                    },
                    {
                        "name": "--indent-heuristic",
                        "group": "Diff algorithm options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "heuristic to shift diff hunk boundaries for easy reading"
                    },
                    {
                        "name": "--patience",
                        "group": "Diff algorithm options",
                        "description": "generate diff using the \"patience diff\" algorithm"
                    },
                    {
                        "name": "--histogram",
                        "group": "Diff algorithm options",
                        "description": "generate diff using the \"histogram diff\" algorithm"
                    },
                    {
                        "name": "--diff-algorithm",
                        "arguments": [
                            {
                                "name": "algorithm",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "description": "choose a diff algorithm"
                    },
                    {
                        "name": "--anchored",
                        "arguments": [
                            {
                                "name": "text",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "description": "generate diff using the \"anchored diff\" algorithm"
                    },
                    {
                        "name": "--word-diff",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "description": "show word diff, using <mode> to delimit changed words"
                    },
                    {
                        "name": "--word-diff-regex",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "description": "use <regex> to decide what a word is"
                    },
                    {
                        "name": "--color-words",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "description": "equivalent to --word-diff=color --word-diff-regex=<regex>"
                    },
                    {
                        "name": "--color-moved",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "moved lines of code are colored differently"
                    },
                    {
                        "name": "--color-moved-ws",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "how white spaces are ignored in --color-moved"
                    },
                    {
                        "name": "--relative",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "when run from subdir, exclude changes outside and show relative paths"
                    },
                    {
                        "name": "--text",
                        "aliases": [
                            "-a"
                        ],
                        "group": "Other diff options",
                        "description": "treat all files as text",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-R",
                        "group": "Other diff options",
                        "description": "swap two inputs, reverse the diff"
                    },
                    {
                        "name": "--exit-code",
                        "group": "Other diff options",
                        "description": "exit with 1 if there were differences, 0 otherwise",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "group": "Other diff options",
                        "description": "disable all output of the program",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ext-diff",
                        "group": "Other diff options",
                        "description": "allow an external diff helper to be executed",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--textconv",
                        "group": "Other diff options",
                        "description": "run external text conversion filters when comparing binary files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ignore-submodules",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "ignore changes to submodules in the diff generation"
                    },
                    {
                        "name": "--submodule",
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "specify how differences in submodules are shown"
                    },
                    {
                        "name": "--ita-invisible-in-index",
                        "group": "Other diff options",
                        "description": "hide 'git add -N' entries from the index"
                    },
                    {
                        "name": "--ita-visible-in-index",
                        "group": "Other diff options",
                        "description": "treat 'git add -N' entries as real in the index"
                    },
                    {
                        "name": "-S",
                        "arguments": [
                            {
                                "name": "string",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "look for differences that change the number of occurrences of the specified string"
                    },
                    {
                        "name": "-G",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "look for differences that change the number of occurrences of the specified regex"
                    },
                    {
                        "name": "--pickaxe-all",
                        "group": "Other diff options",
                        "description": "show all changes in the changeset with -S or -G"
                    },
                    {
                        "name": "--pickaxe-regex",
                        "group": "Other diff options",
                        "description": "treat <string> in -S as extended POSIX regular expression"
                    },
                    {
                        "name": "-O",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "control the order in which files appear in the output"
                    },
                    {
                        "name": "--rotate-to",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "show the change in the specified path first"
                    },
                    {
                        "name": "--skip-to",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "skip the output to the specified path"
                    },
                    {
                        "name": "--find-object",
                        "arguments": [
                            {
                                "name": "object-id",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "look for differences that change the number of occurrences of the specified object"
                    },
                    {
                        "name": "--diff-filter",
                        "arguments": [
                            {
                                "name": "(A|C|D|M|R|T|U|X|B)...[*]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "select files by diff type"
                    },
                    {
                        "name": "--output",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "output to a specific file"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>",
                            "git range-diff [<options>] <old-tip>...<new-tip>",
                            "git range-diff [<options>] <base> <old-tip> <new-tip>"
                        ]
                    }
                ]
            },
            {
                "name": "rebase",
                "description": "Reapply commits on top of another base tip",
                "arguments": [
                    {
                        "name": "upstream",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "branch",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--onto",
                        "arguments": [
                            {
                                "name": "revision",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "rebase onto given branch instead of upstream"
                    },
                    {
                        "name": "--keep-base",
                        "description": "use the merge-base of upstream and branch as the current base",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-verify",
                        "description": "allow pre-rebase hook to run"
                    },
                    {
                        "name": "--verify",
                        "description": "opposite of --no-verify"
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be quiet. implies --no-stat",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "display a diffstat of what changed upstream",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-stat",
                        "aliases": [
                            "-n"
                        ],
                        "description": "do not show diffstat of what changed upstream"
                    },
                    {
                        "name": "--stat",
                        "description": "opposite of --no-stat"
                    },
                    {
                        "name": "--signoff",
                        "description": "add a Signed-off-by trailer to each commit",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--committer-date-is-author-date",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "make committer date match author date"
                    },
                    {
                        "name": "--reset-author-date",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore author date and use current date"
                    },
                    {
                        "name": "-C",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "passed to 'git apply'"
                    },
                    {
                        "name": "--ignore-whitespace",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore changes in whitespace"
                    },
                    {
                        "name": "--whitespace",
                        "arguments": [
                            {
                                "name": "action",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "passed to 'git apply'"
                    },
                    {
                        "name": "--force-rebase",
                        "aliases": [
                            "-f"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "cherry-pick all commits, even if unchanged"
                    },
                    {
                        "name": "--no-ff",
                        "description": "cherry-pick all commits, even if unchanged"
                    },
                    {
                        "name": "--ff",
                        "description": "opposite of --no-ff"
                    },
                    {
                        "name": "--continue",
                        "description": "continue"
                    },
                    {
                        "name": "--skip",
                        "description": "skip current patch and continue"
                    },
                    {
                        "name": "--abort",
                        "description": "abort and check out the original branch"
                    },
                    {
                        "name": "--quit",
                        "description": "abort but keep HEAD where it is"
                    },
                    {
                        "name": "--edit-todo",
                        "description": "edit the todo list during an interactive rebase"
                    },
                    {
                        "name": "--show-current-patch",
                        "description": "show the patch file being applied or merged"
                    },
                    {
                        "name": "--apply",
                        "description": "use apply strategies to rebase"
                    },
                    {
                        "name": "--merge",
                        "aliases": [
                            "-m"
                        ],
                        "description": "use merging strategies to rebase"
                    },
                    {
                        "name": "--interactive",
                        "aliases": [
                            "-i"
                        ],
                        "description": "let the user edit the list of commits to rebase"
                    },
                    {
                        "name": "--rerere-autoupdate",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "update the index with reused conflict resolution if possible"
                    },
                    {
                        "name": "--empty",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "drop",
                                    "keep",
                                    "stop"
                                ]
                            }
                        ],
                        "description": "how to handle commits that become empty"
                    },
                    {
                        "name": "--autosquash",
                        "description": "move commits that begin with squash!/fixup! under -i",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--update-refs",
                        "description": "update branches that point to commits that are being rebased",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--gpg-sign",
                        "aliases": [
                            "-S"
                        ],
                        "arguments": [
                            {
                                "name": "key-id",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "GPG-sign commits"
                    },
                    {
                        "name": "--autostash",
                        "description": "automatically stash/stash pop before and after",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--exec",
                        "aliases": [
                            "-x"
                        ],
                        "arguments": [
                            {
                                "name": "exec",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "add exec lines after each commit of the editable list"
                    },
                    {
                        "name": "--rebase-merges",
                        "aliases": [
                            "-r"
                        ],
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "try to rebase merges instead of skipping them"
                    },
                    {
                        "name": "--fork-point",
                        "description": "use 'merge-base --fork-point' to refine upstream",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--strategy",
                        "aliases": [
                            "-s"
                        ],
                        "arguments": [
                            {
                                "name": "strategy",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use the given merge strategy"
                    },
                    {
                        "name": "--strategy-option",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "option",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "pass the argument through to the merge strategy"
                    },
                    {
                        "name": "--root",
                        "description": "rebase all reachable commits up to the root(s)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--reschedule-failed-exec",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "automatically re-schedule any `exec` that fails"
                    },
                    {
                        "name": "--reapply-cherry-picks",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "apply all changes, even those already present upstream"
                    },
                    {
                        "name": "--no-keep-empty",
                        "aliases": [
                            "--keep-empty"
                        ],
                        "description": "Do not keep commits that start empty before the rebase (i.e. that do not change anything from its parent) in the result. The default is to keep commits which start empty, since creating such commits requires passing the --allow-empty override flag to git commit, signifying that a user is very intentionally creating such a commit and thus wants to keep it.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--allow-empty-message",
                        "description": "No-op. Rebasing commits with an empty message used to fail and this option would override that behavior, allowing commits with empty messages to be rebased. Now commits with an empty message do not cause rebasing to halt.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]",
                            "git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]",
                            "git rebase --continue | --abort | --skip | --edit-todo"
                        ]
                    }
                ]
            },
            {
                "name": "reset",
                "description": "Reset current HEAD to the specified state",
                "arguments": [
                    {
                        "name": "commit",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "tree-ish",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "pathspec",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be quiet, only report errors",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-refresh",
                        "description": "skip refreshing the index after reset"
                    },
                    {
                        "name": "--refresh",
                        "description": "opposite of --no-refresh"
                    },
                    {
                        "name": "--mixed",
                        "description": "reset HEAD and index"
                    },
                    {
                        "name": "--soft",
                        "description": "reset only HEAD"
                    },
                    {
                        "name": "--hard",
                        "description": "reset HEAD, index and working tree"
                    },
                    {
                        "name": "--merge",
                        "description": "reset HEAD, index and working tree"
                    },
                    {
                        "name": "--keep",
                        "description": "reset HEAD but keep local changes"
                    },
                    {
                        "name": "--recurse-submodules",
                        "arguments": [
                            {
                                "name": "reset",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "control recursive updating of submodules"
                    },
                    {
                        "name": "--patch",
                        "aliases": [
                            "-p"
                        ],
                        "description": "select hunks interactively",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--intent-to-add",
                        "aliases": [
                            "-N"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "record only the fact that removed paths will be added later"
                    },
                    {
                        "name": "--pathspec-from-file",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "read pathspec from file"
                    },
                    {
                        "name": "--pathspec-file-nul",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "with --pathspec-from-file, pathspec elements are separated with NUL character"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]",
                            "git reset [-q] [<tree-ish>] [--] <pathspec>...",
                            "git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]",
                            "git reset --patch [<tree-ish>] [--] [<pathspec>...]"
                        ]
                    }
                ]
            },
            {
                "name": "restore",
                "description": "Restore working tree files",
                "arguments": [
                    {
                        "name": "file",
                        "required": true,
                        "arity": {
                            "minimum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--source",
                        "aliases": [
                            "-s"
                        ],
                        "arguments": [
                            {
                                "name": "tree-ish",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "which tree-ish to checkout from"
                    },
                    {
                        "name": "--staged",
                        "aliases": [
                            "-S"
                        ],
                        "description": "restore the index",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--worktree",
                        "aliases": [
                            "-W"
                        ],
                        "description": "restore the working tree (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ignore-unmerged",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore unmerged entries"
                    },
                    {
                        "name": "--overlay",
                        "description": "use overlay mode",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "suppress progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--recurse-submodules",
                        "arguments": [
                            {
                                "name": "checkout",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "control recursive updating of submodules"
                    },
                    {
                        "name": "--progress",
                        "description": "force progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--merge",
                        "aliases": [
                            "-m"
                        ],
                        "description": "perform a 3-way merge with the new branch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--conflict",
                        "arguments": [
                            {
                                "name": "style",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "conflict style (merge, diff3, or zdiff3)"
                    },
                    {
                        "name": "--ours",
                        "aliases": [
                            "-2"
                        ],
                        "description": "checkout our version for unmerged files"
                    },
                    {
                        "name": "--theirs",
                        "aliases": [
                            "-3"
                        ],
                        "description": "checkout their version for unmerged files"
                    },
                    {
                        "name": "--patch",
                        "aliases": [
                            "-p"
                        ],
                        "description": "select hunks interactively",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ignore-skip-worktree-bits",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "do not limit pathspecs to sparse entries only"
                    },
                    {
                        "name": "--pathspec-from-file",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "read pathspec from file"
                    },
                    {
                        "name": "--pathspec-file-nul",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "with --pathspec-from-file, pathspec elements are separated with NUL character"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git restore [<options>] [--source=<branch>] <file>..."
                        ]
                    }
                ]
            },
            {
                "name": "revert",
                "description": "Revert some existing commits",
                "arguments": [
                    {
                        "name": "commit",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--quit",
                        "description": "end revert or cherry-pick sequence"
                    },
                    {
                        "name": "--continue",
                        "description": "resume revert or cherry-pick sequence"
                    },
                    {
                        "name": "--abort",
                        "description": "cancel revert or cherry-pick sequence"
                    },
                    {
                        "name": "--skip",
                        "description": "skip current commit and continue"
                    },
                    {
                        "name": "--cleanup",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "how to strip spaces and #comments from message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-commit",
                        "aliases": [
                            "-n"
                        ],
                        "description": "don't automatically commit"
                    },
                    {
                        "name": "--commit",
                        "description": "opposite of --no-commit"
                    },
                    {
                        "name": "--edit",
                        "aliases": [
                            "-e"
                        ],
                        "description": "edit the commit message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--signoff",
                        "aliases": [
                            "-s"
                        ],
                        "description": "add a Signed-off-by trailer",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--mainline",
                        "aliases": [
                            "-m"
                        ],
                        "arguments": [
                            {
                                "name": "parent-number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "select mainline parent"
                    },
                    {
                        "name": "--rerere-autoupdate",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "update the index with reused conflict resolution if possible"
                    },
                    {
                        "name": "--strategy",
                        "arguments": [
                            {
                                "name": "strategy",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "merge strategy"
                    },
                    {
                        "name": "--strategy-option",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "option",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "option for merge strategy"
                    },
                    {
                        "name": "--gpg-sign",
                        "aliases": [
                            "-S"
                        ],
                        "arguments": [
                            {
                                "name": "key-id",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "GPG sign commit"
                    },
                    {
                        "name": "--reference",
                        "description": "use the 'reference' format to refer to commits",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git revert [--[no-]edit] [-n] [-m <parent-number>] [-s] [-S[<keyid>]] <commit>...",
                            "git revert (--continue | --skip | --abort | --quit)"
                        ]
                    }
                ]
            },
            {
                "name": "rm",
                "description": "Remove files from the working tree and from the index",
                "arguments": [
                    {
                        "name": "pathspec",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--dry-run",
                        "aliases": [
                            "-n"
                        ],
                        "description": "dry run",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "do not list removed files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--cached",
                        "description": "only remove from the index",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "description": "override the up-to-date check",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-r",
                        "description": "allow recursive removal"
                    },
                    {
                        "name": "--ignore-unmatch",
                        "description": "exit with a zero status even if nothing matched",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--sparse",
                        "description": "allow updating entries outside of the sparse-checkout cone",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--pathspec-from-file",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "read pathspec from file"
                    },
                    {
                        "name": "--pathspec-file-nul",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "with --pathspec-from-file, pathspec elements are separated with NUL character"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--pathspec-from-file=<file> [--pathspec-file-nul]] [--] [<pathspec>...]"
                        ]
                    }
                ]
            },
            {
                "name": "shortlog",
                "description": "Summarize 'git log' output",
                "arguments": [
                    {
                        "name": "revision-range",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "path",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--committer",
                        "aliases": [
                            "-c"
                        ],
                        "description": "group by committer rather than author",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--numbered",
                        "aliases": [
                            "-n"
                        ],
                        "description": "sort output according to the number of commits per author",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--summary",
                        "aliases": [
                            "-s"
                        ],
                        "description": "suppress commit descriptions, only provides commit count",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--email",
                        "aliases": [
                            "-e"
                        ],
                        "description": "show the email address of each author",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-w",
                        "arguments": [
                            {
                                "name": "w[,i1[,i2]]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "linewrap output"
                    },
                    {
                        "name": "--group",
                        "arguments": [
                            {
                                "name": "field",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "group by field",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--format",
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Instead of the commit subject, use some other information to describe each commit. <format> can be any string accepted by the --format option of git log, such as * [%h] %s. (See the \"PRETTY FORMATS\" section of git-log(1).)",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--date",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show dates formatted according to the given date string. (See the --date option in the \"Commit Formatting\" section of git-log(1)). Useful with --group=format:<format>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--skip",
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Skip <number> commits before starting to show the commit output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--since",
                        "aliases": [
                            "--after"
                        ],
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show commits more recent than <date>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--since-as-filter",
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show all commits more recent than <date>. This visits all commits in the range, rather than stopping at the first commit which is older than <date>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--until",
                        "aliases": [
                            "--before"
                        ],
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show commits older than <date>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--grep-reflog",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit the commits output to ones with reflog entries that match the <pattern> regular expression. With more than one --grep-reflog, commits whose reflog message matches any of the given patterns are chosen. It is an error to use this option unless --walk-reflogs is in use.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--grep",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit the commits output to ones with a log message that matches the <pattern> regular expression. With more than one --grep=<pattern>, commits whose message matches any of the <pattern> are chosen (but see --all-match).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--all-match",
                        "description": "Limit the commits output to ones that match all given --grep, instead of ones that match at least one.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--invert-grep",
                        "description": "Limit the commits output to ones with a log message that do not match the <pattern> specified with --grep=<pattern>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--regexp-ignore-case",
                        "aliases": [
                            "-i"
                        ],
                        "description": "Match the regular expression limiting patterns without regard to letter case.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--basic-regexp",
                        "description": "Consider the limiting patterns to be basic regular expressions; this is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--extended-regexp",
                        "aliases": [
                            "-E"
                        ],
                        "description": "Consider the limiting patterns to be extended regular expressions instead of the default basic regular expressions.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--fixed-strings",
                        "aliases": [
                            "-F"
                        ],
                        "description": "Consider the limiting patterns to be fixed strings (don't interpret pattern as a regular expression).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--perl-regexp",
                        "aliases": [
                            "-P"
                        ],
                        "description": "Consider the limiting patterns to be Perl-compatible regular expressions.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--remove-empty",
                        "description": "Stop when a given path disappears from the tree.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--merges",
                        "description": "Print only merge commits. This is exactly the same as --min-parents=2.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--min-parents",
                        "aliases": [
                            "--max-parents",
                            "--no-min-parents",
                            "--no-max-parents"
                        ],
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show only commits which have at least (or at most) that many parent commits. In particular, --max-parents=1 is the same as --no-merges, --min-parents=2 is the same as --merges. --max-parents=0 gives all root commits and --min-parents=3 all octopus merges.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--first-parent",
                        "description": "When finding commits to include, follow only the first parent commit upon seeing a merge commit. This option can give a better overview when viewing the evolution of a particular topic branch, because merges into a topic branch tend to be only about adjusting to updated upstream from time to time, and this option allows you to ignore the individual commits brought in to your history by such a merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude-first-parent-only",
                        "description": "When finding commits to exclude (with a ^), follow only the first parent commit upon seeing a merge commit. This can be used to find the set of changes in a topic branch from the point where it diverged from the remote branch, given that arbitrary merges can be valid topic branch changes.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--not",
                        "description": "Reverses the meaning of the ^ prefix (or lack thereof) for all following revision specifiers, up to the next --not. When used on the command line before --stdin, the revisions passed through stdin will not be affected by it. Conversely, when passed via standard input, the revisions passed on the command line will not be affected by it.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--all",
                        "description": "Pretend as if all the refs in refs/, along with HEAD, are listed on the command line as <commit>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--branches",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretend as if all the refs in refs/heads are listed on the command line as <commit>. If <pattern> is given, limit branches to ones matching given shell glob. If <pattern> lacks ?, *, or [, /* at the end is implied.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--tags",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretend as if all the refs in refs/tags are listed on the command line as <commit>. If <pattern> is given, limit tags to ones matching given shell glob. If pattern lacks ?, *, or [, /* at the end is implied.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--remotes",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretend as if all the refs in refs/remotes are listed on the command line as <commit>. If <pattern> is given, limit remote-tracking branches to ones matching given shell glob. If pattern lacks ?, *, or [, /* at the end is implied.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--glob",
                        "arguments": [
                            {
                                "name": "glob-pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretend as if all the refs matching shell glob <glob-pattern> are listed on the command line as <commit>. Leading refs/, is automatically prepended if missing. If pattern lacks ?, *, or [, /* at the end is implied.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude",
                        "arguments": [
                            {
                                "name": "glob-pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Do not include refs matching <glob-pattern> that the next --all, --branches, --tags, --remotes, or --glob would otherwise consider. Repetitions of this option accumulate exclusion patterns up to the next --all, --branches, --tags, --remotes, or --glob option (other options or arguments do not clear accumulated patterns).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude-hidden",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "fetch",
                                    "receive",
                                    "uploadpack"
                                ]
                            }
                        ],
                        "description": "Do not include refs that would be hidden by git-fetch, git-receive-pack or git-upload-pack by consulting the appropriate fetch.hideRefs, receive.hideRefs or uploadpack.hideRefs configuration along with transfer.hideRefs (see git-config(1)). This option affects the next pseudo-ref option --all or --glob and is cleared after processing them.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--reflog",
                        "description": "Pretend as if all objects mentioned by reflogs are listed on the command line as <commit>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--alternate-refs",
                        "description": "Pretend as if all objects mentioned as ref tips of alternate repositories were listed on the command line. An alternate repository is any repository whose object directory is specified in objects/info/alternates. The set of included objects may be modified by core.alternateRefsCommand, etc. See git-config(1).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--single-worktree",
                        "description": "By default, all working trees will be examined by the following options when there are more than one (see git-worktree(1)): --all, --reflog and --indexed-objects. This option forces them to examine the current working tree only.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-missing",
                        "description": "Upon seeing an invalid object name in the input, pretend as if the bad input was not given.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--bisect",
                        "description": "Pretend as if the bad bisection ref refs/bisect/bad was listed and as if it was followed by --not and the good bisection refs refs/bisect/good-* on the command line.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stdin",
                        "description": "In addition to getting arguments from the command line, read them from standard input as well. This accepts commits and pseudo-options like --all and --glob=. When a -- separator is seen, the following input is treated as paths and used to limit the result. Flags like --not which are read via standard input are only respected for arguments passed in the same way and will not influence any subsequent command line arguments.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cherry-mark",
                        "description": "Like --cherry-pick (see below) but mark equivalent commits with = rather than omitting them, and inequivalent ones with +.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cherry-pick",
                        "description": "Omit any commit that introduces the same change as another commit on the \"other side\" when the set of commits are limited with symmetric difference.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--left-only",
                        "aliases": [
                            "--right-only"
                        ],
                        "description": "List only commits on the respective side of a symmetric difference, i.e. only those which would be marked < resp. > by --left-right.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cherry",
                        "description": "A synonym for --right-only --cherry-mark --no-merges; useful to limit the output to the commits on our side and mark those that have been applied to the other side of a forked history with git log --cherry upstream...mybranch, similar to git cherry upstream mybranch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--walk-reflogs",
                        "aliases": [
                            "-g"
                        ],
                        "description": "Instead of walking the commit ancestry chain, walk reflog entries from the most recent one to older ones. When this option is used you cannot specify commits to exclude (that is, ^<commit>, <commit1>..<commit2>, and <commit1>...<commit2> notations cannot be used).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--merge",
                        "description": "Show commits touching conflicted paths in the range HEAD...<other>, where <other> is the first existing pseudoref in MERGE_HEAD, CHERRY_PICK_HEAD, REVERT_HEAD or REBASE_HEAD. Only works when the index has unmerged entries. This option can be used to show relevant commits when resolving conflicts from a 3-way merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--boundary",
                        "description": "Output excluded boundary commits. Boundary commits are prefixed with -.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--simplify-by-decoration",
                        "description": "Commits that are referred by some branch or tag are selected.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-pulls",
                        "description": "Include all commits from the default mode, but also any merge commits that are not TREESAME to the first parent but are TREESAME to a later parent. This mode is helpful for showing the merge commits that \"first introduced\" a change to a branch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--full-history",
                        "description": "Same as the default mode, but does not prune some history.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dense",
                        "description": "Only the selected commits are shown, plus some to have a meaningful history.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--sparse",
                        "description": "All commits in the simplified history are shown.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--simplify-merges",
                        "description": "Additional option to --full-history to remove some needless merges from the resulting history, as there are no selected commits contributing to this merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ancestry-path",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When given a range of commits to display (e.g. <commit1>..<commit2> or <commit2> ^<commit1>), and a commit <commit> in that range, only display commits in that range that are ancestors of <commit>, descendants of <commit>, or <commit> itself. If no commit is specified, use <commit1> (the excluded part of the range) as <commit>. Can be passed multiple times; if so, a commit is included if it is any of the commits given or if it is an ancestor or descendant of one of them.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
                        ]
                    }
                ]
            },
            {
                "name": "show",
                "description": "Show various types of objects",
                "arguments": [
                    {
                        "name": "object",
                        "required": true,
                        "arity": {
                            "minimum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "suppress diff output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--source",
                        "description": "show source",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--use-mailmap",
                        "description": "use mail map file",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--mailmap",
                        "description": "alias of --use-mailmap",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--clear-decorations",
                        "description": "clear all previously-defined decoration filters"
                    },
                    {
                        "name": "--decorate-refs",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "only decorate refs that match <pattern>"
                    },
                    {
                        "name": "--decorate-refs-exclude",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "do not decorate refs that match <pattern>"
                    },
                    {
                        "name": "--decorate",
                        "arguments": [
                            {
                                "name": "...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "decorate options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-L",
                        "arguments": [
                            {
                                "name": "range:file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "trace the evolution of line range <start>,<end> or function :<funcname> in <file>"
                    },
                    {
                        "name": "--pretty",
                        "aliases": [
                            "--format"
                        ],
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretty-print the contents of the commit logs in a given format, where <format> can be one of oneline, short, medium, full, fuller, reference, email, raw, format:<string> and tformat:<string>. When <format> is none of the above, and has %<placeholder> in it, it acts as if --pretty=tformat:<format> were given.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--abbrev-commit",
                        "description": "Instead of showing the full 40-byte hexadecimal commit object name, show a prefix that names the object uniquely. --abbrev=<n> (which also modifies diff output, if it is displayed) option can be used to specify the minimum length of the prefix.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--oneline",
                        "description": "This is a shorthand for --pretty=oneline --abbrev-commit used together.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--encoding",
                        "arguments": [
                            {
                                "name": "encoding",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Commit objects record the character encoding used for the log message in their encoding header; this option can be used to tell the command to re-code the commit log message in the encoding preferred by the user. For non plumbing commands this defaults to UTF-8. Note that if an object claims to be encoded in X and we are outputting in X, we will output the object verbatim; this means that invalid sequences in the original commit may be copied to the output. Likewise, if iconv(3) fails to convert the commit, we will quietly output the original object verbatim.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--expand-tabs",
                        "aliases": [
                            "--no-expand-tabs"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Perform a tab expansion (replace each tab with enough spaces to fill to the next display column that is a multiple of <n>) in the log message before showing it in the output. --expand-tabs is a short-hand for --expand-tabs=8, and --no-expand-tabs is a short-hand for --expand-tabs=0, which disables tab expansion.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--notes",
                        "arguments": [
                            {
                                "name": "ref",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the notes (see git-notes(1)) that annotate the commit, when showing the commit log message. This is the default for git log, git show and git whatchanged commands when there is no --pretty, --format, or --oneline option given on the command line.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-notes-by-default",
                        "description": "Show the default notes unless options for displaying specific notes are given.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-notes",
                        "aliases": [
                            "--standard-notes",
                            "--no-standard-notes"
                        ],
                        "arguments": [
                            {
                                "name": "ref",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "These options are deprecated. Use the above --notes/--no-notes options instead.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-signature",
                        "description": "Check the validity of a signed commit object by passing the signature to gpg --verify and show the output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch",
                        "aliases": [
                            "-p",
                            "-u"
                        ],
                        "description": "Generate patch (see the section called \"GENERATING PATCH TEXT WITH -P\").",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-m",
                        "description": "Show diffs for merge commits in the default format. This is similar to --diff-merges=on, except -m will produce no output unless -p is given as well.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-c",
                        "description": "Produce combined diff output for merge commits. Shortcut for --diff-merges=combined -p.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cc",
                        "description": "Produce dense combined diff output for merge commits. Shortcut for --diff-merges=dense-combined -p.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dd",
                        "description": "Produce diff with respect to first parent for both merge and regular commits. Shortcut for --diff-merges=first-parent -p.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--remerge-diff",
                        "description": "Produce remerge-diff output for merge commits. Shortcut for --diff-merges=remerge -p.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-diff-merges",
                        "description": "Synonym for --diff-merges=off.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-merges",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify diff format to be used for merge commits. Default is `dense-combined` unless --first-parent is in use, in which case first-parent is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--combined-all-paths",
                        "description": "Cause combined diffs (used for merge commits) to list the name of the file from all parents. It thus only has effect when --diff-merges=[dense-]combined is in use, and is likely only useful if filename changes are detected (i.e. when either rename or copy detection have been requested).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--unified",
                        "aliases": [
                            "-U"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate diffs with <n> lines of context instead of the usual three. Implies --patch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output to a specific file instead of stdout.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output-indicator-new",
                        "aliases": [
                            "--output-indicator-old",
                            "--output-indicator-context"
                        ],
                        "arguments": [
                            {
                                "name": "char",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the character used to indicate new, old or context lines in the generated patch. Normally they are +, - and ' ' respectively.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--raw",
                        "description": "For each commit, show a summary of changes using the raw diff format. See the \"RAW OUTPUT FORMAT\" section of git-diff(1). This is different from showing the log itself in raw format, which you can achieve with --format=raw.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch-with-raw",
                        "description": "Synonym for -p --raw.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-t",
                        "description": "Show the tree objects in the diff output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--indent-heuristic",
                        "description": "Enable the heuristic that shifts diff hunk boundaries to make patches easier to read. This is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--minimal",
                        "description": "Spend extra time to make sure the smallest possible diff is produced.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patience",
                        "description": "Generate a diff using the \"patience diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--histogram",
                        "description": "Generate a diff using the \"histogram diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--anchored",
                        "arguments": [
                            {
                                "name": "text",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diff using the \"anchored diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-algorithm",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "patience",
                                    "minimal",
                                    "histogram",
                                    "myers"
                                ]
                            }
                        ],
                        "description": "Choose a diff algorithm. The variants are as follows:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stat",
                        "arguments": [
                            {
                                "name": "width[,name-width[,count]]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diffstat. By default, as much space as necessary will be used for the filename part, and the rest for the graph part. Maximum width defaults to terminal width, or 80 columns if not connected to a terminal, and can be overridden by <width>. The width of the filename part can be limited by giving another width <name-width> after a comma or by setting diff.statNameWidth=<name-width>. The width of the graph part can be limited by using --stat-graph-width=<graph-width> or by setting diff.statGraphWidth=<graph-width>. Using --stat or --stat-graph-width affects all commands generating a stat graph, while setting diff.statNameWidth or diff.statGraphWidth does not affect git format-patch. By giving a third parameter <count>, you can limit the output to the first <count> lines, followed by ... if there are more.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--compact-summary",
                        "description": "Output a condensed summary of extended header information such as file creations or deletions (\"new\" or \"gone\", optionally +l if it's a symlink) and mode changes (+x or -x for adding or removing executable bit respectively) in diffstat. The information is put between the filename part and the graph part. Implies --stat.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--numstat",
                        "description": "Similar to --stat, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two - instead of saying 0 0.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--shortstat",
                        "description": "Output only the last line of the --stat format containing total number of modified files, as well as number of added and deleted lines.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output the distribution of relative amount of changes for each sub-directory. The behavior of --dirstat can be customized by passing it a comma separated list of parameters. The defaults are controlled by the diff.dirstat configuration variable (see git-config(1)). The following parameters are available:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cumulative",
                        "description": "Synonym for --dirstat=cumulative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat-by-file",
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Synonym for --dirstat=files,<param>,....",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--summary",
                        "description": "Output a condensed summary of extended header information such as creations, renames and mode changes.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch-with-stat",
                        "description": "Synonym for -p --stat.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-z",
                        "description": "Separate the commits with NULs instead of newlines.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--name-only",
                        "description": "Show only the name of each changed file in the post-image tree. The file names are often encoded in UTF-8. For more information see the discussion about encoding in the git-log(1) manual page.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--name-status",
                        "description": "Show only the name(s) and status of each changed file. See the description of the --diff-filter option on what the status letters mean. Just like --name-only the file names are often encoded in UTF-8.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--submodule",
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify how differences in submodules are shown. When specifying --submodule=short the short format is used. This format just shows the names of the commits at the beginning and end of the range. When --submodule or --submodule=log is specified, the log format is used. This format lists the commits in the range like git-submodule(1) summary does. When --submodule=diff is specified, the diff format is used. This format shows an inline diff of the changes in the submodule contents between the commit range. Defaults to diff.submodule or the short format if the config option is unset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show colored diff. --color (i.e. without =<when>) is the same as --color=always. <when> can be one of always, never, or auto.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-moved",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Moved lines of code are colored differently. The <mode> defaults to no if the option is not given and to zebra if the option with no mode is given. The mode must be one of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-moved-ws",
                        "arguments": [
                            {
                                "name": "mode,...",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This configures how whitespace is ignored when performing the move detection for --color-moved. These modes can be given as a comma separated list:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--word-diff",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "By default, words are delimited by whitespace; see --word-diff-regex below. The <mode> defaults to plain, and must be one of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--word-diff-regex",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Use <regex> to decide what a word is, instead of considering runs of non-whitespace to be a word. Also implies --word-diff unless it was already enabled.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-words",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Equivalent to --word-diff=color plus (if a regex was specified) --word-diff-regex=<regex>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-renames",
                        "description": "Turn off rename detection, even when the configuration file gives the default to do so.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--rename-empty",
                        "description": "Whether to use empty blobs as rename source.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--check",
                        "description": "Warn if changes introduce conflict markers or whitespace errors. What are considered whitespace errors is controlled by core.whitespace configuration. By default, trailing whitespaces (including lines that consist solely of whitespaces) and a space character that is immediately followed by a tab character inside the initial indent of the line are considered whitespace errors. Exits with non-zero status if problems are found. Not compatible with --exit-code.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ws-error-highlight",
                        "arguments": [
                            {
                                "name": "kind",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Highlight whitespace errors in the context, old or new lines of the diff. Multiple values are separated by comma, none resets previous values, default reset the list to new and all is a shorthand for old,new,context. When this option is not given, and the configuration variable diff.wsErrorHighlight is not set, only whitespace errors in new lines are highlighted. The whitespace errors are colored with color.diff.whitespace.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--full-index",
                        "description": "Instead of the first handful of characters, show the full pre- and post-image blob object names on the \"index\" line when generating patch format output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--binary",
                        "description": "In addition to --full-index, output a binary diff that can be applied with git-apply. Implies --patch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header lines, show the shortest prefix that is at least <n> hexdigits long that uniquely refers the object. In diff-patch output format, --full-index takes higher precedence, i.e. if --full-index is specified, full blob names will be shown regardless of --abbrev. Non default number of digits can be specified with --abbrev=<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--break-rewrites",
                        "aliases": [
                            "-B"
                        ],
                        "arguments": [
                            {
                                "name": "[n][/m]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Break complete rewrite changes into pairs of delete and create. This serves two purposes:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-renames",
                        "aliases": [
                            "-M"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "If generating diffs, detect and report renames for each commit. For following files across renames while traversing history, see --follow. If <n> is specified, it is a threshold on the similarity index (i.e. amount of addition/deletions compared to the file's size). For example, -M90% means Git should consider a delete/add pair to be a rename if more than 90% of the file hasn't changed. Without a % sign, the number is to be read as a fraction, with a decimal point before it. I.e., -M5 becomes 0.5, and is thus the same as -M50%. Similarly, -M05 is the same as -M5%. To limit detection to exact renames, use -M100%. The default similarity index is 50%.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies",
                        "aliases": [
                            "-C"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Detect copies as well as renames. See also --find-copies-harder. If <n> is specified, it has the same meaning as for -M<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies-harder",
                        "description": "For performance reasons, by default, -C option finds copies only if the original file of the copy was modified in the same changeset. This flag makes the command inspect unmodified files as candidates for the source of copy. This is a very expensive operation for large projects, so use it with caution. Giving more than one -C option has the same effect.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--irreversible-delete",
                        "aliases": [
                            "-D"
                        ],
                        "description": "Omit the preimage for deletes, i.e. print only the header but not the diff between the preimage and /dev/null. The resulting patch is not meant to be applied with patch or git apply; this is solely for people who want to just concentrate on reviewing the text after the change. In addition, the output obviously lacks enough information to apply such a patch in reverse, even manually, hence the name of the option.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-l",
                        "arguments": [
                            {
                                "name": "num",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "The -M and -C options involve some preliminary steps that can detect subsets of renames/copies cheaply, followed by an exhaustive fallback portion that compares all remaining unpaired destinations to all relevant sources. (For renames, only remaining unpaired sources are relevant; for copies, all original sources are relevant.) For N sources and destinations, this exhaustive check is O(N^2). This option prevents the exhaustive portion of rename/copy detection from running if the number of source/destination files involved exceeds the specified number. Defaults to diff.renameLimit. Note that a value of 0 is treated as unlimited.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-filter",
                        "arguments": [
                            {
                                "name": "[(A|C|D|M|R|T|U|X|B)...[*]]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (i.e. regular file, symlink, submodule, ...) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B). Any combination of the filter characters (including none) can be used. When * (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-S",
                        "arguments": [
                            {
                                "name": "string",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences that change the number of occurrences of the specified <string> (i.e. addition/deletion) in a file. Intended for the scripter's use.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-G",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences whose patch text contains added/removed lines that match <regex>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-object",
                        "arguments": [
                            {
                                "name": "object-id",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences that change the number of occurrences of the specified object. Similar to -S, just the argument is different in that it doesn't search for a specific string but for a specific object id.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pickaxe-all",
                        "description": "When -S or -G finds a change, show all the changes in that changeset, not just the files that contain the change in <string>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pickaxe-regex",
                        "description": "Treat the <string> given to -S as an extended POSIX regular expression to match.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-O",
                        "arguments": [
                            {
                                "name": "orderfile",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Control the order in which files appear in the output. This overrides the diff.orderFile configuration variable (see git-config(1)). To cancel diff.orderFile, use -O/dev/null.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--skip-to",
                        "aliases": [
                            "--rotate-to"
                        ],
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Discard the files before the named <file> from the output (i.e. skip to), or move them to the end of the output (i.e. rotate to). These options were invented primarily for the use of the git difftool command, and may not be very useful otherwise.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-R",
                        "description": "Swap two inputs; that is, show differences from index or on-disk file to tree contents.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--relative",
                        "aliases": [
                            "--no-relative"
                        ],
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. --no-relative can be used to countermand both diff.relative config option and previous --relative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--text",
                        "aliases": [
                            "-a"
                        ],
                        "description": "Treat all files as text.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-cr-at-eol",
                        "description": "Ignore carriage-return at the end of line when doing a comparison.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-at-eol",
                        "description": "Ignore changes in whitespace at EOL.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-change",
                        "aliases": [
                            "-b"
                        ],
                        "description": "Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-all-space",
                        "aliases": [
                            "-w"
                        ],
                        "description": "Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-blank-lines",
                        "description": "Ignore changes whose lines are all blank.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-matching-lines",
                        "aliases": [
                            "-I"
                        ],
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Ignore changes whose all lines match <regex>. This option may be specified more than once.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--inter-hunk-context",
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the context between diff hunks, up to the specified <number> of lines, thereby fusing hunks that are close to each other. Defaults to diff.interHunkContext or 0 if the config option is unset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--function-context",
                        "aliases": [
                            "-W"
                        ],
                        "description": "Show whole function as context lines for each change. The function names are determined in the same way as git diff works out patch hunk headers (see \"Defining a custom hunk-header\" in gitattributes(5)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ext-diff",
                        "description": "Allow an external diff helper to be executed. If you set an external diff driver with gitattributes(5), you need to use this option with git-log(1) and friends.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--textconv",
                        "aliases": [
                            "--no-textconv"
                        ],
                        "description": "Allow (or disallow) external text conversion filters to be run when comparing binary files. See gitattributes(5) for details. Because textconv filters are typically a one-way conversion, the resulting diff is suitable for human consumption, but cannot be applied. For this reason, textconv filters are enabled by default only for git-diff(1) and git-log(1), but not for git-format-patch(1) or diff plumbing commands.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-submodules",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "none",
                                    "untracked",
                                    "dirty",
                                    "all"
                                ]
                            }
                        ],
                        "description": "Ignore changes to submodules in the diff generation. all is the default. Using none will consider the submodule modified when it either contains untracked or modified files or its HEAD differs from the commit recorded in the superproject and can be used to override any settings of the ignore option in git-config(1) or gitmodules(5). When untracked is used submodules are not considered dirty when they only contain untracked content (but they are still scanned for modified content). Using dirty ignores all changes to the work tree of submodules, only changes to the commits stored in the superproject are shown (this was the behavior until 1.7.0). Using all hides all changes to submodules.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--src-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given source <prefix> instead of \"a/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dst-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given destination <prefix> instead of \"b/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-prefix",
                        "description": "Do not show any source or destination prefix.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--default-prefix",
                        "description": "Use the default source and destination prefixes (\"a/\" and \"b/\"). This overrides configuration variables such as diff.noprefix, diff.srcPrefix, diff.dstPrefix, and diff.mnemonicPrefix (see git-config(1)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--line-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Prepend an additional <prefix> to every line of output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ita-invisible-in-index",
                        "description": "By default entries added by git add -N appear as an existing empty file in git diff and a new file in git diff --cached. This option makes the entry appear as a new file in git diff and non-existent in git diff --cached. This option could be reverted with --ita-visible-in-index. Both options are experimental and could be removed in future.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git show [<options>] <object>..."
                        ]
                    }
                ]
            },
            {
                "name": "sparse-checkout",
                "description": "Reduce your working tree to a subset of tracked files",
                "commands": [
                    {
                        "name": "init",
                        "description": "Deprecated command that behaves like set with no specified paths. May be removed in the future.",
                        "options": [
                            {
                                "name": "--cone",
                                "description": "initialize the sparse-checkout in cone mode",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--sparse-index",
                                "description": "toggle the use of a sparse index",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git sparse-checkout (init | list | set | add | reapply | disable | check-rules) [<options>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "list",
                        "description": "Describe the directories or patterns in the sparse-checkout file.",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git sparse-checkout (init | list | set | add | reapply | disable | check-rules) [<options>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "set",
                        "description": "Enable the necessary sparse-checkout config settings (core.sparseCheckout, core.sparseCheckoutCone, and index.sparse) if they are not already set to the desired values, populate the sparse-checkout file from the list of arguments following the set subcommand, and update the working directory to match.",
                        "arguments": [
                            {
                                "name": "patterns",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--cone",
                                "description": "initialize the sparse-checkout in cone mode",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--sparse-index",
                                "description": "toggle the use of a sparse index",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--skip-checks",
                                "description": "skip some sanity checks on the given paths that might give false positives"
                            },
                            {
                                "name": "--stdin",
                                "description": "read patterns from standard in"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git sparse-checkout (init | list | set | add | reapply | disable | check-rules) [<options>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "add",
                        "description": "Update the sparse-checkout file to include additional directories (in cone mode) or patterns (in non-cone mode). By default, these directories or patterns are read from the command-line arguments, but they can be read from stdin using the --stdin option.",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git sparse-checkout (init | list | set | add | reapply | disable | check-rules) [<options>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "reapply",
                        "description": "Reapply the sparsity pattern rules to paths in the working tree. Commands like merge or rebase can materialize paths to do their work (e.g. in order to show you a conflict), and other sparse-checkout commands might fail to sparsify an individual file (e.g. because it has unstaged changes or conflicts). In such cases, it can make sense to run git sparse-checkout reapply later after cleaning up affected paths (e.g. resolving conflicts, undoing or committing changes, etc.).",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git sparse-checkout (init | list | set | add | reapply | disable | check-rules) [<options>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "disable",
                        "description": "Disable the core.sparseCheckout config setting, and restore the working directory to include all files.",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git sparse-checkout (init | list | set | add | reapply | disable | check-rules) [<options>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "check-rules",
                        "description": "Check whether sparsity rules match one or more paths.",
                        "options": [
                            {
                                "name": "-z",
                                "description": "terminate input and output files by a NUL character"
                            },
                            {
                                "name": "--cone",
                                "description": "when used with --rules-file interpret patterns as cone mode patterns",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--rules-file",
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "use patterns in <file> instead of the current ones."
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git sparse-checkout (init | list | set | add | reapply | disable | check-rules) [<options>]"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git sparse-checkout (init | list | set | add | reapply | disable | check-rules) [<options>]"
                        ]
                    }
                ]
            },
            {
                "name": "stash",
                "description": "Stash the changes in a dirty working directory away",
                "commands": [
                    {
                        "name": "list",
                        "description": "List the stash entries that you currently have. Each stash entry is listed with its name (e.g. stash@{0} is the latest entry, stash@{1} is the one before, etc.), the name of the branch that was current when the entry was made, and a short description of the commit the entry was based on.",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git stash list [<log-options>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "show",
                        "description": "Show the changes recorded in the stash entry as a diff between the stashed contents and the commit back when the stash entry was first created. By default, the command shows the diffstat, but it will accept any format known to git diff (e.g., git stash show -p stash@{1} to view the second most recent entry in patch form). If no <diff-option> is provided, the default behavior will be given by the stash.showStat, and stash.showPatch config variables. You can also use stash.showIncludeUntracked to set whether --include-untracked is enabled by default.",
                        "arguments": [
                            {
                                "name": "stash",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--include-untracked",
                                "aliases": [
                                    "-u"
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "include untracked files in the stash"
                            },
                            {
                                "name": "--only-untracked",
                                "description": "only show untracked files in the stash"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git stash show [-u | --include-untracked | --only-untracked] [<diff-options>] [<stash>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "drop",
                        "description": "Remove a single stash entry from the list of stash entries.",
                        "arguments": [
                            {
                                "name": "stash",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--quiet",
                                "aliases": [
                                    "-q"
                                ],
                                "description": "be quiet, only report errors",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git stash drop [-q | --quiet] [<stash>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "pop",
                        "description": "Remove a single stashed state from the stash list and apply it on top of the current working tree state, i.e., do the inverse operation of git stash push. The working directory must match the index.",
                        "arguments": [
                            {
                                "name": "stash",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--quiet",
                                "aliases": [
                                    "-q"
                                ],
                                "description": "be quiet, only report errors",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--index",
                                "description": "attempt to recreate the index",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git stash pop [--index] [-q | --quiet] [<stash>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "apply",
                        "description": "Like pop, but do not remove the state from the stash list. Unlike pop, <stash> may be any commit that looks like a commit created by stash push or stash create.",
                        "arguments": [
                            {
                                "name": "stash",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--quiet",
                                "aliases": [
                                    "-q"
                                ],
                                "description": "be quiet, only report errors",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--index",
                                "description": "attempt to recreate the index",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git stash apply [--index] [-q | --quiet] [<stash>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "branch",
                        "description": "Creates and checks out a new branch named <branchname> starting from the commit at which the <stash> was originally created, applies the changes recorded in <stash> to the new working tree and index. If that succeeds, and <stash> is a reference of the form stash@{<revision>}, it then drops the <stash>.",
                        "arguments": [
                            {
                                "name": "branchname",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "stash",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git stash branch <branchname> [<stash>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "push",
                        "description": "Save your local modifications to a new stash entry and roll them back to HEAD (in the working tree and in the index). The <message> part is optional and gives the description along with the stashed state.",
                        "arguments": [
                            {
                                "name": "pathspec",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "-p",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--patch",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "-S",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--staged",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "-k",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--keep-index",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    },
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "-q",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--quiet",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "-u",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--include-untracked",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "-a",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--all",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "-m",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--message",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--pathspec-from-file",
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--pathspec-file-nul",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git stash [push [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | --quiet] [-u | --include-untracked] [-a | --all] [(-m | --message) <message>] [--pathspec-from-file=<file> [--pathspec-file-nul]] [--] [<pathspec>...]]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "save",
                        "description": "This option is deprecated in favour of git stash push. It differs from \"stash push\" in that it cannot take pathspec. Instead, all non-option arguments are concatenated to form the stash message.",
                        "arguments": [
                            {
                                "name": "message",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--keep-index",
                                "aliases": [
                                    "-k"
                                ],
                                "description": "keep index",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--staged",
                                "aliases": [
                                    "-S"
                                ],
                                "description": "stash staged changes only",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--patch",
                                "aliases": [
                                    "-p"
                                ],
                                "description": "stash in patch mode",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--quiet",
                                "aliases": [
                                    "-q"
                                ],
                                "description": "quiet mode",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--include-untracked",
                                "aliases": [
                                    "-u"
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "include untracked files in stash"
                            },
                            {
                                "name": "--all",
                                "aliases": [
                                    "-a"
                                ],
                                "description": "include ignore files",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--message",
                                "aliases": [
                                    "-m"
                                ],
                                "arguments": [
                                    {
                                        "name": "message",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "stash message"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git stash save [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | --quiet] [-u | --include-untracked] [-a | --all] [<message>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "clear",
                        "description": "Remove all the stash entries. Note that those entries will then be subject to pruning, and may be impossible to recover (see Examples below for a possible strategy).",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git stash clear"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "create",
                        "description": "Create a stash entry (which is a regular commit object) and return its object name, without storing it anywhere in the ref namespace. This is intended to be useful for scripts. It is probably not the command you want to use; see \"push\" above.",
                        "arguments": [
                            {
                                "name": "message",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git stash create [<message>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "store",
                        "description": "Store a given stash created via git stash create (which is a dangling merge commit) in the stash ref, updating the stash reflog. This is intended to be useful for scripts. It is probably not the command you want to use; see \"push\" above.",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--quiet",
                                "aliases": [
                                    "-q"
                                ],
                                "description": "be quiet",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--message",
                                "aliases": [
                                    "-m"
                                ],
                                "arguments": [
                                    {
                                        "name": "message",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "stash message"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git stash store [(-m | --message) <message>] [-q | --quiet] <commit>"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git stash list [<log-options>]",
                            "git stash show [-u | --include-untracked | --only-untracked] [<diff-options>] [<stash>]",
                            "git stash drop [-q | --quiet] [<stash>]",
                            "git stash pop [--index] [-q | --quiet] [<stash>]",
                            "git stash apply [--index] [-q | --quiet] [<stash>]",
                            "git stash branch <branchname> [<stash>]",
                            "git stash [push [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | --quiet] [-u | --include-untracked] [-a | --all] [(-m | --message) <message>] [--pathspec-from-file=<file> [--pathspec-file-nul]] [--] [<pathspec>...]]",
                            "git stash save [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | --quiet] [-u | --include-untracked] [-a | --all] [<message>]",
                            "git stash clear",
                            "git stash create [<message>]",
                            "git stash store [(-m | --message) <message>] [-q | --quiet] <commit>"
                        ]
                    }
                ]
            },
            {
                "name": "status",
                "description": "Show the working tree status",
                "arguments": [
                    {
                        "name": "pathspec",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--short",
                        "aliases": [
                            "-s"
                        ],
                        "description": "show status concisely",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--branch",
                        "aliases": [
                            "-b"
                        ],
                        "description": "show branch information",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--show-stash",
                        "description": "show stash information",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ahead-behind",
                        "description": "compute full ahead/behind values",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--porcelain",
                        "arguments": [
                            {
                                "name": "version",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "machine-readable output"
                    },
                    {
                        "name": "--long",
                        "description": "show status in long format (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--null",
                        "aliases": [
                            "-z"
                        ],
                        "description": "terminate entries with NUL",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--untracked-files",
                        "aliases": [
                            "-u"
                        ],
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show untracked files, optional modes: all, normal, no. (Default: all)"
                    },
                    {
                        "name": "--ignored",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show ignored files, optional modes: traditional, matching, no. (Default: traditional)"
                    },
                    {
                        "name": "--ignore-submodules",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)"
                    },
                    {
                        "name": "--column",
                        "arguments": [
                            {
                                "name": "style",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "list untracked files in columns"
                    },
                    {
                        "name": "--no-renames",
                        "description": "do not detect renames"
                    },
                    {
                        "name": "--renames",
                        "description": "opposite of --no-renames"
                    },
                    {
                        "name": "--find-renames",
                        "aliases": [
                            "-M"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "detect renames, optionally set similarity index"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git status [<options>] [--] [<pathspec>...]"
                        ]
                    }
                ]
            },
            {
                "name": "submodule",
                "description": "Initialize, update or inspect submodules",
                "commands": [
                    {
                        "name": "add",
                        "description": "Add the given repository as a submodule at the given path to the changeset to be committed next to the current project: the current project is termed the \"superproject\".",
                        "arguments": [
                            {
                                "name": "repository",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "-b",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "-f",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--force",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--name",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--reference",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git submodule [--quiet] add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--] <repository> [<path>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "status",
                        "description": "Show the status of the submodules. This will print the SHA-1 of the currently checked out commit for each submodule, along with the submodule path and the output of git describe for the SHA-1. Each SHA-1 will possibly be prefixed with - if the submodule is not initialized, + if the currently checked out submodule commit does not match the SHA-1 found in the index of the containing repository and U if the submodule has merge conflicts.",
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--cached",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--recursive",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git submodule [--quiet] status [--cached] [--recursive] [--] [<path>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "init",
                        "description": "Initialize the submodules recorded in the index (which were added and committed elsewhere) by setting submodule.$name.url in .git/config, using the same setting from .gitmodules as a template. If the URL is relative, it will be resolved using the default remote. If there is no default remote, the current repository will be assumed to be upstream.",
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git submodule [--quiet] init [--] [<path>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "deinit",
                        "description": "Unregister the given submodules, i.e. remove the whole submodule.$name section from .git/config together with their work tree. Further calls to git submodule update, git submodule foreach and git submodule sync will skip any unregistered submodules until they are initialized again, so use this command if you don't want to have a local checkout of the submodule in your working tree anymore.",
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "-f",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--force",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--all",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git submodule [--quiet] deinit [-f|--force] (--all| [--] <path>...)"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "update",
                        "description": "Update the registered submodules to match what the superproject expects by cloning missing submodules, fetching missing commits in submodules and updating the working tree of the submodules. The \"updating\" can be done in several ways depending on command line options and the value of submodule.<name>.update configuration variable. The command line option takes precedence over the configuration variable. If neither is given, a checkout is performed. (note: what is in .gitmodules file is irrelevant at this point; see git submodule init above for how .gitmodules is used). The update procedures supported both from the command line as well as through the submodule.<name>.update configuration are:",
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--init",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--filter",
                                "arguments": [
                                    {
                                        "name": "filter-spec",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--remote",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "-N",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--no-fetch",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "-f",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--force",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--checkout",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--merge",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--rebase",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--recommend-shallow",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    },
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--reference",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--recursive",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--single-branch",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    },
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git submodule [--quiet] update [--init [--filter=<filter-spec>]] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-shallow] [--reference <repository>] [--recursive] [--[no-]single-branch] [--] [<path>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "set-branch",
                        "description": "Sets the default remote tracking branch for the submodule. The --branch option allows the remote branch to be specified. The --default option removes the submodule.<name>.branch configuration key, which causes the tracking branch to default to the remote HEAD.",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--default",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--branch",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git submodule [--quiet] set-branch (--default|--branch <branch>) [--] <path>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "set-url",
                        "description": "Sets the URL of the specified submodule to <newurl>. Then, it will automatically synchronize the submodule's new remote URL configuration.",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "newurl",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git submodule [--quiet] set-url [--] <path> <newurl>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "summary",
                        "description": "Show commit summary between the given commit (defaults to HEAD) and working tree/index. For a submodule in question, a series of commits in the submodule between the given super project commit and the index or working tree (switched by --cached) are shown. If the option --files is given, show the series of commits in the submodule between the index of the super project and the working tree of the submodule (this option doesn't allow to use the --cached option or to provide an explicit commit).",
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--cached",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--files",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--summary-limit",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git submodule [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "foreach",
                        "description": "Evaluates an arbitrary shell command in each checked out submodule. The command has access to the variables $name, $sm_path, $displaypath, $sha1 and $toplevel: $name is the name of the relevant submodule section in .gitmodules, $sm_path is the path of the submodule as recorded in the immediate superproject, $displaypath contains the relative path from the current working directory to the submodules root directory, $sha1 is the commit as recorded in the immediate superproject, and $toplevel is the absolute path to the top-level of the immediate superproject. Note that to avoid conflicts with $PATH on Windows, the $path variable is now a deprecated synonym of $sm_path variable. Any submodules defined in the superproject but not checked out are ignored by this command. Unless given --quiet, foreach prints the name of each submodule before evaluating the command. If --recursive is given, submodules are traversed recursively (i.e. the given shell command is evaluated in nested submodules as well). A non-zero return from the command in any submodule causes the processing to terminate. This can be overridden by adding || : to the end of the command.",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--recursive",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git submodule [--quiet] foreach [--recursive] <command>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "sync",
                        "description": "Synchronizes submodules' remote URL configuration setting to the value specified in .gitmodules. It will only affect those submodules which already have a URL entry in .git/config (that is the case when they are initialized or freshly added). This is useful when submodule URLs change upstream and you need to update your local repositories accordingly.",
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--recursive",
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git submodule [--quiet] sync [--recursive] [--] [<path>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "absorbgitdirs",
                        "description": "If a git directory of a submodule is inside the submodule, move the git directory of the submodule into its superproject's $GIT_DIR/modules path and then connect the git directory and its working directory by setting the core.worktree and adding a .git file pointing to the git directory embedded in the superprojects git directory.",
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git submodule [--quiet] absorbgitdirs [--] [<path>...]"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git submodule [--quiet] [--cached]",
                            "git submodule [--quiet] add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--] <repository> [<path>]",
                            "git submodule [--quiet] status [--cached] [--recursive] [--] [<path>...]",
                            "git submodule [--quiet] init [--] [<path>...]",
                            "git submodule [--quiet] deinit [-f|--force] (--all| [--] <path>...)",
                            "git submodule [--quiet] update [--init [--filter=<filter-spec>]] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-shallow] [--reference <repository>] [--recursive] [--[no-]single-branch] [--] [<path>...]",
                            "git submodule [--quiet] set-branch (--default|--branch <branch>) [--] <path>",
                            "git submodule [--quiet] set-url [--] <path> <newurl>",
                            "git submodule [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]",
                            "git submodule [--quiet] foreach [--recursive] <command>",
                            "git submodule [--quiet] sync [--recursive] [--] [<path>...]",
                            "git submodule [--quiet] absorbgitdirs [--] [<path>...]"
                        ]
                    }
                ]
            },
            {
                "name": "switch",
                "description": "Switch branches",
                "arguments": [
                    {
                        "name": "branch",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--create",
                        "aliases": [
                            "-c"
                        ],
                        "arguments": [
                            {
                                "name": "branch",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "create and switch to a new branch"
                    },
                    {
                        "name": "--force-create",
                        "aliases": [
                            "-C"
                        ],
                        "arguments": [
                            {
                                "name": "branch",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "create/reset and switch to a branch"
                    },
                    {
                        "name": "--guess",
                        "description": "second guess 'git switch <no-such-branch>'",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--discard-changes",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "throw away local modifications"
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "suppress progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--recurse-submodules",
                        "arguments": [
                            {
                                "name": "checkout",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "control recursive updating of submodules"
                    },
                    {
                        "name": "--progress",
                        "description": "force progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--merge",
                        "aliases": [
                            "-m"
                        ],
                        "description": "perform a 3-way merge with the new branch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--conflict",
                        "arguments": [
                            {
                                "name": "style",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "conflict style (merge, diff3, or zdiff3)"
                    },
                    {
                        "name": "--detach",
                        "aliases": [
                            "-d"
                        ],
                        "description": "detach HEAD at named commit",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--track",
                        "aliases": [
                            "-t"
                        ],
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "direct",
                                    "inherit"
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "set branch tracking configuration"
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "description": "force checkout (throw away local modifications)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--orphan",
                        "arguments": [
                            {
                                "name": "new-branch",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "new unborn branch"
                    },
                    {
                        "name": "--overwrite-ignore",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "update ignored files (default)"
                    },
                    {
                        "name": "--ignore-other-worktrees",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "do not check if another worktree is using this branch"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git switch [<options>] [<branch>]"
                        ]
                    }
                ]
            },
            {
                "name": "tag",
                "description": "Create, list, delete or verify a tag object signed with GPG",
                "arguments": [
                    {
                        "name": "tagname",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "commit",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "object",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "pattern",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--list",
                        "aliases": [
                            "-l"
                        ],
                        "description": "list tag names"
                    },
                    {
                        "name": "-n",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "print <n> lines of each tag message"
                    },
                    {
                        "name": "--delete",
                        "aliases": [
                            "-d"
                        ],
                        "description": "delete tags"
                    },
                    {
                        "name": "--verify",
                        "aliases": [
                            "-v"
                        ],
                        "description": "verify tags"
                    },
                    {
                        "name": "--annotate",
                        "aliases": [
                            "-a"
                        ],
                        "group": "Tag creation options",
                        "description": "annotated tag, needs a message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--message",
                        "aliases": [
                            "-m"
                        ],
                        "arguments": [
                            {
                                "name": "message",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag creation options",
                        "description": "tag message"
                    },
                    {
                        "name": "--file",
                        "aliases": [
                            "-F"
                        ],
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag creation options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "read message from file"
                    },
                    {
                        "name": "--trailer",
                        "arguments": [
                            {
                                "name": "trailer",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag creation options",
                        "description": "add custom trailer(s)"
                    },
                    {
                        "name": "--edit",
                        "aliases": [
                            "-e"
                        ],
                        "group": "Tag creation options",
                        "description": "force edit of tag message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--sign",
                        "aliases": [
                            "-s"
                        ],
                        "group": "Tag creation options",
                        "description": "annotated and GPG-signed tag",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--cleanup",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag creation options",
                        "description": "how to strip spaces and #comments from message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--local-user",
                        "aliases": [
                            "-u"
                        ],
                        "arguments": [
                            {
                                "name": "key-id",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag creation options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use another key to sign the tag"
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "group": "Tag creation options",
                        "description": "replace the tag if exists",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--create-reflog",
                        "group": "Tag creation options",
                        "description": "create a reflog",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--column",
                        "arguments": [
                            {
                                "name": "style",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag listing options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show tag list in columns"
                    },
                    {
                        "name": "--contains",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag listing options",
                        "description": "print only tags that contain the commit"
                    },
                    {
                        "name": "--no-contains",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag listing options",
                        "description": "print only tags that don't contain the commit"
                    },
                    {
                        "name": "--merged",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag listing options",
                        "description": "print only tags that are merged"
                    },
                    {
                        "name": "--no-merged",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag listing options",
                        "description": "print only tags that are not merged"
                    },
                    {
                        "name": "--omit-empty",
                        "group": "Tag listing options",
                        "description": "do not output a newline after empty formatted refs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--sort",
                        "arguments": [
                            {
                                "name": "key",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag listing options",
                        "description": "field name to sort on",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--points-at",
                        "arguments": [
                            {
                                "name": "object",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag listing options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "print only tags of the object"
                    },
                    {
                        "name": "--format",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag listing options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "format to use for the output"
                    },
                    {
                        "name": "--color",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Tag listing options",
                        "description": "respect format colors",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ignore-case",
                        "aliases": [
                            "-i"
                        ],
                        "group": "Tag listing options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "sorting and filtering are case insensitive"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>] [-e] [(--trailer <token>[(=|:)<value>])...] <tagname> [<commit> | <object>]",
                            "git tag -d <tagname>...",
                            "git tag [-n[<num>]] -l [--contains <commit>] [--no-contains <commit>] [--points-at <object>] [--column[=<options>] | --no-column] [--create-reflog] [--sort=<key>] [--format=<format>] [--merged <commit>] [--no-merged <commit>] [<pattern>...]",
                            "git tag -v [--format=<format>] <tagname>..."
                        ]
                    }
                ]
            },
            {
                "name": "worktree",
                "description": "Manage multiple working trees",
                "commands": [
                    {
                        "name": "add",
                        "description": "Create a worktree at <path> and checkout <commit-ish> into it. The new worktree is linked to the current repository, sharing everything except per-worktree files such as HEAD, index, etc. As a convenience, <commit-ish> may be a bare \"-\", which is synonymous with @{-1}.",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "commit-ish",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--force",
                                "aliases": [
                                    "-f"
                                ],
                                "description": "checkout <branch> even if already checked out in other worktree",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "-b",
                                "arguments": [
                                    {
                                        "name": "branch",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "create a new branch"
                            },
                            {
                                "name": "-B",
                                "arguments": [
                                    {
                                        "name": "branch",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "create or reset a branch"
                            },
                            {
                                "name": "--orphan",
                                "description": "create unborn branch",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--detach",
                                "aliases": [
                                    "-d"
                                ],
                                "description": "detach HEAD at named commit",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--checkout",
                                "description": "populate the new working tree",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--lock",
                                "description": "keep the new working tree locked",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--reason",
                                "arguments": [
                                    {
                                        "name": "string",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "reason for locking"
                            },
                            {
                                "name": "--quiet",
                                "aliases": [
                                    "-q"
                                ],
                                "description": "suppress progress reporting",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--track",
                                "description": "set up tracking mode (see git-branch(1))",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--guess-remote",
                                "description": "try to match the new branch name with a remote-tracking branch",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--relative-paths",
                                "description": "use relative paths for worktrees",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git worktree add [-f] [--detach] [--checkout] [--lock [--reason <string>]] [--orphan] [(-b | -B) <new-branch>] <path> [<commit-ish>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "list",
                        "description": "List details of each worktree. The main worktree is listed first, followed by each of the linked worktrees. The output details include whether the worktree is bare, the revision currently checked out, the branch currently checked out (or \"detached HEAD\" if none), \"locked\" if the worktree is locked, \"prunable\" if the worktree can be pruned by the prune command.",
                        "options": [
                            {
                                "name": "--porcelain",
                                "description": "machine-readable output",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--verbose",
                                "aliases": [
                                    "-v"
                                ],
                                "description": "show extended annotations and reasons, if available",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--expire",
                                "arguments": [
                                    {
                                        "name": "expiry-date",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "add 'prunable' annotation to worktrees older than <time>"
                            },
                            {
                                "name": "-z",
                                "description": "terminate records with a NUL character"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git worktree list [-v | --porcelain [-z]]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "lock",
                        "description": "If a worktree is on a portable device or network share which is not always mounted, lock it to prevent its administrative files from being pruned automatically. This also prevents it from being moved or deleted. Optionally, specify a reason for the lock with --reason.",
                        "arguments": [
                            {
                                "name": "worktree",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--reason",
                                "arguments": [
                                    {
                                        "name": "string",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "reason for locking"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git worktree lock [--reason <string>] <worktree>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "move",
                        "description": "Move a worktree to a new location. Note that the main worktree or linked worktrees containing submodules cannot be moved with this command. (The git worktree repair command, however, can reestablish the connection with linked worktrees if you move the main worktree manually.)",
                        "arguments": [
                            {
                                "name": "worktree",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "new-path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--force",
                                "aliases": [
                                    "-f"
                                ],
                                "description": "force move even if worktree is dirty or locked",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--relative-paths",
                                "description": "use relative paths for worktrees",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git worktree move <worktree> <new-path>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "prune",
                        "description": "Prune worktree information in $GIT_DIR/worktrees.",
                        "options": [
                            {
                                "name": "--dry-run",
                                "aliases": [
                                    "-n"
                                ],
                                "description": "do not remove, show only",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--verbose",
                                "aliases": [
                                    "-v"
                                ],
                                "description": "report pruned working trees",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--expire",
                                "arguments": [
                                    {
                                        "name": "expiry-date",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "expire working trees older than <time>"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git worktree prune [-n] [-v] [--expire <expire>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "remove",
                        "description": "Remove a worktree. Only clean worktrees (no untracked files and no modification in tracked files) can be removed. Unclean worktrees or ones with submodules can be removed with --force. The main worktree cannot be removed.",
                        "arguments": [
                            {
                                "name": "worktree",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--force",
                                "aliases": [
                                    "-f"
                                ],
                                "description": "force removal even if worktree is dirty or locked",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git worktree remove [-f] <worktree>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "repair",
                        "description": "Repair worktree administrative files, if possible, if they have become corrupted or outdated due to external factors.",
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--relative-paths",
                                "description": "use relative paths for worktrees",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git worktree repair [<path>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "unlock",
                        "description": "Unlock a worktree, allowing it to be pruned, moved or deleted.",
                        "arguments": [
                            {
                                "name": "worktree",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git worktree unlock <worktree>"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Main Porcelain Commands"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git worktree add [-f] [--detach] [--checkout] [--lock [--reason <string>]] [--orphan] [(-b | -B) <new-branch>] <path> [<commit-ish>]",
                            "git worktree list [-v | --porcelain [-z]]",
                            "git worktree lock [--reason <string>] <worktree>",
                            "git worktree move <worktree> <new-path>",
                            "git worktree prune [-n] [-v] [--expire <expire>]",
                            "git worktree remove [-f] <worktree>",
                            "git worktree repair [<path>...]",
                            "git worktree unlock <worktree>"
                        ]
                    }
                ]
            },
            {
                "name": "config",
                "description": "Get and set repository or global options",
                "arguments": [
                    {
                        "name": "stdout-is-tty",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "commands": [
                    {
                        "name": "list",
                        "description": "List all variables set in config file, along with their values.",
                        "options": [
                            {
                                "name": "--global",
                                "group": "Config file location",
                                "description": "use global config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--system",
                                "group": "Config file location",
                                "description": "use system config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--local",
                                "group": "Config file location",
                                "description": "use repository config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--worktree",
                                "group": "Config file location",
                                "description": "use per-worktree config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--file",
                                "aliases": [
                                    "-f"
                                ],
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "use given config file"
                            },
                            {
                                "name": "--blob",
                                "arguments": [
                                    {
                                        "name": "blob-id",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "description": "read config from given blob object",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--null",
                                "aliases": [
                                    "-z"
                                ],
                                "group": "Display options",
                                "description": "terminate values with NUL byte",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--name-only",
                                "group": "Display options",
                                "description": "show variable names only",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--show-origin",
                                "group": "Display options",
                                "description": "show origin of config (file, standard input, blob, command line)",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--show-scope",
                                "group": "Display options",
                                "description": "show scope of config (worktree, local, global, system, command)",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--show-names",
                                "group": "Display options",
                                "description": "show config keys in addition to their values",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--type",
                                "aliases": [
                                    "-t"
                                ],
                                "arguments": [
                                    {
                                        "name": "type",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Type",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "value is given this type"
                            },
                            {
                                "name": "--bool",
                                "group": "Type",
                                "description": "value is \"true\" or \"false\""
                            },
                            {
                                "name": "--int",
                                "group": "Type",
                                "description": "value is decimal number"
                            },
                            {
                                "name": "--bool-or-int",
                                "group": "Type",
                                "description": "value is --bool or --int"
                            },
                            {
                                "name": "--bool-or-str",
                                "group": "Type",
                                "description": "value is --bool or string"
                            },
                            {
                                "name": "--path",
                                "group": "Type",
                                "description": "value is a path (file or directory name)"
                            },
                            {
                                "name": "--expiry-date",
                                "group": "Type",
                                "description": "value is an expiry date"
                            },
                            {
                                "name": "--includes",
                                "group": "Other",
                                "description": "respect include directives on lookup",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git config list [<file-option>] [<display-option>] [--includes]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "get",
                        "description": "Emits the value of the specified key. If key is present multiple times in the configuration, emits the last value. If --all is specified, emits all values associated with key. Returns error code 1 if key is not present.",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--global",
                                "group": "Config file location",
                                "description": "use global config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--system",
                                "group": "Config file location",
                                "description": "use system config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--local",
                                "group": "Config file location",
                                "description": "use repository config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--worktree",
                                "group": "Config file location",
                                "description": "use per-worktree config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--file",
                                "aliases": [
                                    "-f"
                                ],
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "use given config file"
                            },
                            {
                                "name": "--blob",
                                "arguments": [
                                    {
                                        "name": "blob-id",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "description": "read config from given blob object",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--all",
                                "group": "Filter options",
                                "description": "return all values for multi-valued config options",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--regexp",
                                "group": "Filter options",
                                "description": "interpret the name as a regular expression",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--value",
                                "arguments": [
                                    {
                                        "name": "pattern",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Filter options",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "show config with values matching the pattern"
                            },
                            {
                                "name": "--fixed-value",
                                "group": "Filter options",
                                "description": "use string equality when comparing values to value pattern",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--url",
                                "arguments": [
                                    {
                                        "name": "URL",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Filter options",
                                "description": "show config matching the given URL",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--null",
                                "aliases": [
                                    "-z"
                                ],
                                "group": "Display options",
                                "description": "terminate values with NUL byte",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--name-only",
                                "group": "Display options",
                                "description": "show variable names only",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--show-origin",
                                "group": "Display options",
                                "description": "show origin of config (file, standard input, blob, command line)",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--show-scope",
                                "group": "Display options",
                                "description": "show scope of config (worktree, local, global, system, command)",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--show-names",
                                "group": "Display options",
                                "description": "show config keys in addition to their values",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--type",
                                "aliases": [
                                    "-t"
                                ],
                                "arguments": [
                                    {
                                        "name": "type",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Type",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "value is given this type"
                            },
                            {
                                "name": "--bool",
                                "group": "Type",
                                "description": "value is \"true\" or \"false\""
                            },
                            {
                                "name": "--int",
                                "group": "Type",
                                "description": "value is decimal number"
                            },
                            {
                                "name": "--bool-or-int",
                                "group": "Type",
                                "description": "value is --bool or --int"
                            },
                            {
                                "name": "--bool-or-str",
                                "group": "Type",
                                "description": "value is --bool or string"
                            },
                            {
                                "name": "--path",
                                "group": "Type",
                                "description": "value is a path (file or directory name)"
                            },
                            {
                                "name": "--expiry-date",
                                "group": "Type",
                                "description": "value is an expiry date"
                            },
                            {
                                "name": "--includes",
                                "group": "Other",
                                "description": "respect include directives on lookup",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--default",
                                "arguments": [
                                    {
                                        "name": "value",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Other",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "use default value when missing entry"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git config get [<file-option>] [<display-option>] [--includes] [--all] [--regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "set",
                        "description": "Set value for one or more config options. By default, this command refuses to write multi-valued config options. Passing --all will replace all multi-valued config options with the new value, whereas --value= will replace all config options whose values match the given pattern.",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--global",
                                "group": "Config file location",
                                "description": "use global config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--system",
                                "group": "Config file location",
                                "description": "use system config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--local",
                                "group": "Config file location",
                                "description": "use repository config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--worktree",
                                "group": "Config file location",
                                "description": "use per-worktree config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--file",
                                "aliases": [
                                    "-f"
                                ],
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "use given config file"
                            },
                            {
                                "name": "--blob",
                                "arguments": [
                                    {
                                        "name": "blob-id",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "description": "read config from given blob object",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--type",
                                "aliases": [
                                    "-t"
                                ],
                                "arguments": [
                                    {
                                        "name": "type",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Type",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "value is given this type"
                            },
                            {
                                "name": "--bool",
                                "group": "Type",
                                "description": "value is \"true\" or \"false\""
                            },
                            {
                                "name": "--int",
                                "group": "Type",
                                "description": "value is decimal number"
                            },
                            {
                                "name": "--bool-or-int",
                                "group": "Type",
                                "description": "value is --bool or --int"
                            },
                            {
                                "name": "--bool-or-str",
                                "group": "Type",
                                "description": "value is --bool or string"
                            },
                            {
                                "name": "--path",
                                "group": "Type",
                                "description": "value is a path (file or directory name)"
                            },
                            {
                                "name": "--expiry-date",
                                "group": "Type",
                                "description": "value is an expiry date"
                            },
                            {
                                "name": "--all",
                                "group": "Filter",
                                "description": "replace multi-valued config option with new value",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--value",
                                "arguments": [
                                    {
                                        "name": "pattern",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Filter",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "show config with values matching the pattern"
                            },
                            {
                                "name": "--fixed-value",
                                "group": "Filter",
                                "description": "use string equality when comparing values to value pattern",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--comment",
                                "arguments": [
                                    {
                                        "name": "value",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Other",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "human-readable comment string (# will be prepended as needed)"
                            },
                            {
                                "name": "--append",
                                "group": "Other",
                                "description": "add a new line without altering any existing values",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "unset",
                        "description": "Unset value for one or more config options. By default, this command refuses to unset multi-valued keys. Passing --all will unset all multi-valued config options, whereas --value will unset all config options whose values match the given pattern.",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--global",
                                "group": "Config file location",
                                "description": "use global config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--system",
                                "group": "Config file location",
                                "description": "use system config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--local",
                                "group": "Config file location",
                                "description": "use repository config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--worktree",
                                "group": "Config file location",
                                "description": "use per-worktree config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--file",
                                "aliases": [
                                    "-f"
                                ],
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "use given config file"
                            },
                            {
                                "name": "--blob",
                                "arguments": [
                                    {
                                        "name": "blob-id",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "description": "read config from given blob object",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--all",
                                "group": "Filter",
                                "description": "replace multi-valued config option with new value",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--value",
                                "arguments": [
                                    {
                                        "name": "pattern",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Filter",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "show config with values matching the pattern"
                            },
                            {
                                "name": "--fixed-value",
                                "group": "Filter",
                                "description": "use string equality when comparing values to value pattern",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git config unset [<file-option>] [--all] [--value=<value>] [--fixed-value] <name>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "rename-section",
                        "description": "Rename the given section to a new name.",
                        "arguments": [
                            {
                                "name": "old-name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "new-name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--global",
                                "group": "Config file location",
                                "description": "use global config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--system",
                                "group": "Config file location",
                                "description": "use system config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--local",
                                "group": "Config file location",
                                "description": "use repository config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--worktree",
                                "group": "Config file location",
                                "description": "use per-worktree config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--file",
                                "aliases": [
                                    "-f"
                                ],
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "use given config file"
                            },
                            {
                                "name": "--blob",
                                "arguments": [
                                    {
                                        "name": "blob-id",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "description": "read config from given blob object",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git config rename-section [<file-option>] <old-name> <new-name>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "remove-section",
                        "description": "Remove the given section from the configuration file.",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--global",
                                "group": "Config file location",
                                "description": "use global config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--system",
                                "group": "Config file location",
                                "description": "use system config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--local",
                                "group": "Config file location",
                                "description": "use repository config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--worktree",
                                "group": "Config file location",
                                "description": "use per-worktree config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--file",
                                "aliases": [
                                    "-f"
                                ],
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "use given config file"
                            },
                            {
                                "name": "--blob",
                                "arguments": [
                                    {
                                        "name": "blob-id",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "description": "read config from given blob object",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git config remove-section [<file-option>] <name>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "edit",
                        "description": "Opens an editor to modify the specified config file; either --system, --global, --local (default), --worktree, or --file <config-file>.",
                        "options": [
                            {
                                "name": "--global",
                                "group": "Config file location",
                                "description": "use global config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--system",
                                "group": "Config file location",
                                "description": "use system config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--local",
                                "group": "Config file location",
                                "description": "use repository config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--worktree",
                                "group": "Config file location",
                                "description": "use per-worktree config file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--file",
                                "aliases": [
                                    "-f"
                                ],
                                "arguments": [
                                    {
                                        "name": "file",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "use given config file"
                            },
                            {
                                "name": "--blob",
                                "arguments": [
                                    {
                                        "name": "blob-id",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "group": "Config file location",
                                "description": "read config from given blob object",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git config edit [<file-option>]"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git config list [<file-option>] [<display-option>] [--includes]",
                            "git config get [<file-option>] [<display-option>] [--includes] [--all] [--regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>",
                            "git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value>",
                            "git config unset [<file-option>] [--all] [--value=<value>] [--fixed-value] <name>",
                            "git config rename-section [<file-option>] <old-name> <new-name>",
                            "git config remove-section [<file-option>] <name>",
                            "git config edit [<file-option>]",
                            "git config [<file-option>] --get-colorbool <name> [<stdout-is-tty>]"
                        ]
                    }
                ]
            },
            {
                "name": "fast-export",
                "description": "Git data exporter",
                "options": [
                    {
                        "name": "--progress",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "show progress after <n> objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--signed-tags",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "select handling of signed tags"
                    },
                    {
                        "name": "--signed-commits",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "select handling of signed commits"
                    },
                    {
                        "name": "--tag-of-filtered-object",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "select handling of tags that tag filtered objects"
                    },
                    {
                        "name": "--reencode",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "select handling of commit messages in an alternate encoding"
                    },
                    {
                        "name": "--export-marks",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "dump marks to this file"
                    },
                    {
                        "name": "--import-marks",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "import marks from this file"
                    },
                    {
                        "name": "--import-marks-if-exists",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "import marks from this file if it exists"
                    },
                    {
                        "name": "--fake-missing-tagger",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "fake a tagger when tags lack one"
                    },
                    {
                        "name": "--full-tree",
                        "description": "output full tree for each commit",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--use-done-feature",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use the done feature to terminate the stream"
                    },
                    {
                        "name": "--no-data",
                        "description": "skip output of blob data"
                    },
                    {
                        "name": "--data",
                        "description": "opposite of --no-data"
                    },
                    {
                        "name": "--refspec",
                        "arguments": [
                            {
                                "name": "refspec",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "apply refspec to exported refs"
                    },
                    {
                        "name": "--anonymize",
                        "description": "anonymize output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--anonymize-map",
                        "arguments": [
                            {
                                "name": "from:to",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "convert <from> to <to> in anonymized output"
                    },
                    {
                        "name": "--reference-excluded-parents",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "reference parents which are not in fast-export stream by object id"
                    },
                    {
                        "name": "--show-original-ids",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show original object ids of blobs/commits"
                    },
                    {
                        "name": "--mark-tags",
                        "description": "label tags with mark ids",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-M",
                        "aliases": [
                            "-C"
                        ],
                        "description": "Perform move and/or copy detection, as described in the git-diff(1) manual page, and use it to generate rename and copy commands in the output dump.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git fast-export [<rev-list-opts>]"
                        ]
                    }
                ]
            },
            {
                "name": "fast-import",
                "description": "Backend for fast Git data importers",
                "options": [
                    {
                        "name": "--force",
                        "description": "Force updating modified existing branches, even if doing so would cause commits to be lost (as the new commit does not contain the old commit).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "description": "Disable the output shown by --stats, making fast-import usually be silent when it is successful. However, if the import stream has directives intended to show user output (e.g. progress directives), the corresponding messages will still be shown.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stats",
                        "description": "Display some basic statistics about the objects fast-import has created, the packfiles they were stored into, and the memory used by fast-import during this run. Showing this output is currently the default, but can be disabled with --quiet.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--allow-unsafe-features",
                        "description": "Many command-line options can be provided as part of the fast-import stream itself by using the feature or option commands. However, some of these options are unsafe (e.g., allowing fast-import to access the filesystem outside of the repository). These options are disabled by default, but can be allowed by providing this option on the command line. This currently impacts only the export-marks, import-marks, and import-marks-if-exists feature commands.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cat-blob-fd",
                        "arguments": [
                            {
                                "name": "fd",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Write responses to get-mark, cat-blob, and ls queries to the file descriptor <fd> instead of stdout. Allows progress output intended for the end-user to be separated from other output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--date-format",
                        "arguments": [
                            {
                                "name": "fmt",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the type of dates the frontend will supply to fast-import within author, committer and tagger commands. See \"Date Formats\" below for details about which formats are supported, and their syntax.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--done",
                        "description": "Terminate with error if there is no done command at the end of the stream. This option might be useful for detecting errors that cause the frontend to terminate before it has started to write a stream.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--export-marks",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Dumps the internal marks table to <file> when complete. Marks are written one per line as :markid SHA-1. Frontends can use this file to validate imports after they have been completed, or to save the marks table across incremental runs. As <file> is only opened and truncated at checkpoint (or completion) the same path can also be safely given to --import-marks.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--import-marks",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Before processing any input, load the marks specified in <file>. The input file must exist, must be readable, and must use the same format as produced by --export-marks. Multiple options may be supplied to import more than one set of marks. If a mark is defined to different values, the last file wins.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--import-marks-if-exists",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Like --import-marks but instead of erroring out, silently skips the file if it does not exist.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--relative-marks",
                        "description": "After specifying --relative-marks the paths specified with --import-marks= and --export-marks= are relative to an internal directory in the current repository. In git-fast-import this means that the paths are relative to the .git/info/fast-import directory. However, other importers may use a different location.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--rewrite-submodules-from",
                        "aliases": [
                            "--rewrite-submodules-to"
                        ],
                        "arguments": [
                            {
                                "name": "name:file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Rewrite the object IDs for the submodule specified by <name> from the values used in the from <file> to those used in the to <file>. The from marks should have been created by git fast-export, and the to marks should have been created by git fast-import when importing that same submodule.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--active-branches",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Maximum number of branches to maintain active at once. See \"Memory Utilization\" below for details. Default is 5.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--big-file-threshold",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Maximum size of a blob that fast-import will attempt to create a delta for, expressed in bytes. The default is 512m (512 MiB). Some importers may wish to lower this on systems with constrained memory.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--depth",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Maximum delta depth, for blob and tree deltification. Default is 50.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--export-pack-edges",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "After creating a packfile, print a line of data to <file> listing the filename of the packfile and the last commit on each branch that was written to that packfile. This information may be useful after importing projects whose total object set exceeds the 4 GiB packfile limit, as these commits can be used as edge points during calls to git pack-objects.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--max-pack-size",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Maximum size of each output packfile. The default is unlimited.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git fast-import [--date-format=<f>] [--max-pack-size=<n>] [--big-file-threshold=<n>] [--depth=<n>] [--active-branches=<n>] [--export-marks=<marks.file>]"
                        ]
                    }
                ]
            },
            {
                "name": "filter-branch",
                "description": "Rewrite branches",
                "options": [
                    {
                        "name": "--setup",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This is not a real filter executed for each commit but a one time setup just before the loop. Therefore no commit-specific variables are defined yet. Functions or variables defined here can be used or modified in the following filter steps except the commit filter, for technical reasons.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--subdirectory-filter",
                        "arguments": [
                            {
                                "name": "directory",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Only look at the history which touches the given subdirectory. The result will contain that directory (and only that) as its project root. Implies the section called \"Remap to ancestor\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--env-filter",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This filter may be used if you only need to modify the environment in which the commit will be performed. Specifically, you might want to rewrite the author/committer name/email/time environment variables (see git-commit-tree(1) for details).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--tree-filter",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This is the filter for rewriting the tree and its contents. The argument is evaluated in shell with the working directory set to the root of the checked out tree. The new tree is then used as-is (new files are auto-added, disappeared files are auto-removed - neither .gitignore files nor any other ignore rules HAVE ANY EFFECT!).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--index-filter",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This is the filter for rewriting the index. It is similar to the tree filter but does not check out the tree, which makes it much faster. Frequently used with git rm --cached --ignore-unmatch ..., see EXAMPLES below. For hairy cases, see git-update-index(1).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--parent-filter",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This is the filter for rewriting the commit's parent list. It will receive the parent string on stdin and shall output the new parent string on stdout. The parent string is in the format described in git-commit-tree(1): empty for the initial commit, \"-p parent\" for a normal commit and \"-p parent1 -p parent2 -p parent3 ...\" for a merge commit.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--msg-filter",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This is the filter for rewriting the commit messages. The argument is evaluated in the shell with the original commit message on standard input; its standard output is used as the new commit message.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--commit-filter",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This is the filter for performing the commit. If this filter is specified, it will be called instead of the git commit-tree command, with arguments of the form \"<TREE_ID> [(-p <PARENT_COMMIT_ID>)...]\" and the log message on stdin. The commit id is expected on stdout.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--tag-name-filter",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This is the filter for rewriting tag names. When passed, it will be called for every tag ref that points to a rewritten object (or to a tag object which points to a rewritten object). The original tag name is passed via standard input, and the new tag name is expected on standard output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--prune-empty",
                        "description": "Some filters will generate empty commits that leave the tree untouched. This option instructs git-filter-branch to remove such commits if they have exactly one or zero non-pruned parents; merge commits will therefore remain intact. This option cannot be used together with --commit-filter, though the same effect can be achieved by using the provided git_commit_non_empty_tree function in a commit filter.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--original",
                        "arguments": [
                            {
                                "name": "namespace",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Use this option to set the namespace where the original commits will be stored. The default value is refs/original.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-d",
                        "arguments": [
                            {
                                "name": "directory",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Use this option to set the path to the temporary directory used for rewriting. When applying a tree filter, the command needs to temporarily check out the tree to some directory, which may consume considerable space in case of large projects. By default it does this in the .git-rewrite/ directory but you can override that choice by this parameter.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "description": "git filter-branch refuses to start with an existing temporary directory or when there are already refs starting with refs/original/, unless forced.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--state-branch",
                        "arguments": [
                            {
                                "name": "branch",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This option will cause the mapping from old to new objects to be loaded from named branch upon startup and saved as a new commit to that branch upon exit, enabling incremental of large trees. If <branch> does not exist it will be created.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git filter-branch [--setup <command>] [--subdirectory-filter <directory>] [--env-filter <command>] [--tree-filter <command>] [--index-filter <command>] [--parent-filter <command>] [--msg-filter <command>] [--commit-filter <command>] [--tag-name-filter <command>] [--original <namespace>] [-d <directory>] [-f | --force] [--state-branch <branch>] [--] [<rev-list options>...]"
                        ]
                    }
                ]
            },
            {
                "name": "mergetool",
                "description": "Run merge conflict resolution tools to resolve merge conflicts",
                "commands": [
                    {
                        "name": "file",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git mergetool [--tool=tool] [--tool-help] [-y|--no-prompt|--prompt] [-g|--gui|--no-gui] [-O<orderfile>] [file to merge] ..."
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git mergetool [--tool=tool] [--tool-help] [-y|--no-prompt|--prompt] [-g|--gui|--no-gui] [-O<orderfile>] [file to merge] ..."
                        ]
                    }
                ]
            },
            {
                "name": "pack-refs",
                "description": "Pack heads and tags for efficient repository access",
                "options": [
                    {
                        "name": "--all",
                        "description": "pack everything",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--prune",
                        "description": "prune loose refs (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--auto",
                        "description": "auto-pack refs as needed",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--include",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "references to include"
                    },
                    {
                        "name": "--exclude",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "references to exclude"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git pack-refs [--all] [--no-prune] [--auto] [--include <pattern>] [--exclude <pattern>]"
                        ]
                    }
                ]
            },
            {
                "name": "prune",
                "description": "Prune all unreachable objects from the object database",
                "arguments": [
                    {
                        "name": "head",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--dry-run",
                        "aliases": [
                            "-n"
                        ],
                        "description": "do not remove, show only",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "report pruned objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--progress",
                        "description": "show progress",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--expire",
                        "arguments": [
                            {
                                "name": "expiry-date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "expire objects older than <time>"
                    },
                    {
                        "name": "--exclude-promisor-objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "limit traversal to objects outside promisor packfiles"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"
                        ]
                    }
                ]
            },
            {
                "name": "reflog",
                "description": "Manage reflog information",
                "commands": [
                    {
                        "name": "show",
                        "arguments": [
                            {
                                "name": "ref",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git reflog [show] [<log-options>] [<ref>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "list",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git reflog list"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "expire",
                        "arguments": [
                            {
                                "name": "refs",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--dry-run",
                                "aliases": [
                                    "-n"
                                ],
                                "description": "do not actually prune any entries",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--rewrite",
                                "description": "rewrite the old SHA1 with the new SHA1 of the entry that now precedes it",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--updateref",
                                "description": "update the reference to the value of the top reflog entry",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--verbose",
                                "description": "print extra information on screen",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--expire",
                                "arguments": [
                                    {
                                        "name": "timestamp",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "prune entries older than the specified time"
                            },
                            {
                                "name": "--expire-unreachable",
                                "arguments": [
                                    {
                                        "name": "timestamp",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "prune entries older than <time> that are not reachable from the current tip of the branch"
                            },
                            {
                                "name": "--stale-fix",
                                "description": "prune any reflog entries that point to broken commits",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--all",
                                "description": "process the reflogs of all references",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--single-worktree",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "limits processing to reflogs from the current worktree only"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git reflog expire [--expire=<time>] [--expire-unreachable=<time>] [--rewrite] [--updateref] [--stale-fix] [--dry-run | -n] [--verbose] [--all [--single-worktree] | <refs>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "delete",
                        "options": [
                            {
                                "name": "--dry-run",
                                "aliases": [
                                    "-n"
                                ],
                                "description": "do not actually prune any entries",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--rewrite",
                                "description": "rewrite the old SHA1 with the new SHA1 of the entry that now precedes it",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--updateref",
                                "description": "update the reference to the value of the top reflog entry",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--verbose",
                                "description": "print extra information on screen",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git reflog delete [--rewrite] [--updateref] [--dry-run | -n] [--verbose] <ref>@{<specifier>}..."
                                ]
                            }
                        ]
                    },
                    {
                        "name": "drop",
                        "arguments": [
                            {
                                "name": "refs",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--all",
                                "description": "drop the reflogs of all references",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--single-worktree",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "drop reflogs from the current worktree only"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git reflog drop [--all [--single-worktree] | <refs>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "exists",
                        "arguments": [
                            {
                                "name": "ref",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git reflog exists <ref>"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git reflog [show] [<log-options>] [<ref>]",
                            "git reflog list",
                            "git reflog expire [--expire=<time>] [--expire-unreachable=<time>] [--rewrite] [--updateref] [--stale-fix] [--dry-run | -n] [--verbose] [--all [--single-worktree] | <refs>...]",
                            "git reflog delete [--rewrite] [--updateref] [--dry-run | -n] [--verbose] <ref>@{<specifier>}...",
                            "git reflog drop [--all [--single-worktree] | <refs>...]",
                            "git reflog exists <ref>"
                        ]
                    }
                ]
            },
            {
                "name": "refs",
                "description": "Low-level access to refs",
                "commands": [
                    {
                        "name": "migrate",
                        "description": "Migrate ref store between different formats.",
                        "options": [
                            {
                                "name": "--ref-format",
                                "arguments": [
                                    {
                                        "name": "format",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "specify the reference format to convert to"
                            },
                            {
                                "name": "--dry-run",
                                "description": "perform a non-destructive dry-run",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--no-reflog",
                                "description": "drop reflogs entirely during the migration"
                            },
                            {
                                "name": "--reflog",
                                "description": "opposite of --no-reflog"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "verify",
                        "description": "Verify reference database consistency.",
                        "options": [
                            {
                                "name": "--verbose",
                                "description": "be verbose",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--strict",
                                "description": "enable strict checking",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git refs verify [--strict] [--verbose]"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]",
                            "git refs verify [--strict] [--verbose]"
                        ]
                    }
                ]
            },
            {
                "name": "remote",
                "description": "Manage set of tracked repositories",
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be verbose; must be placed before a subcommand",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "commands": [
                    {
                        "name": "add",
                        "description": "Add a remote named <name> for the repository at <URL>. The command git fetch <name> can then be used to create and update remote-tracking branches <name>/<branch>.",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "url",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--fetch",
                                "aliases": [
                                    "-f"
                                ],
                                "description": "fetch the remote branches",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--tags",
                                "description": "import all tags and associated objects when fetching or do not fetch any tag at all (--no-tags)",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--track",
                                "aliases": [
                                    "-t"
                                ],
                                "arguments": [
                                    {
                                        "name": "branch",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "branch(es) to track"
                            },
                            {
                                "name": "--master",
                                "aliases": [
                                    "-m"
                                ],
                                "arguments": [
                                    {
                                        "name": "branch",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "master branch"
                            },
                            {
                                "name": "--mirror",
                                "arguments": [
                                    {
                                        "name": "value",
                                        "required": false,
                                        "arity": {
                                            "minimum": 0,
                                            "maximum": 1
                                        },
                                        "acceptedValues": [
                                            "push",
                                            "fetch"
                                        ]
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "set up remote as a mirror to push to or fetch from"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--mirror=<fetch|push>] <name> <url>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "rename",
                        "description": "Rename the remote named <old> to <new>. All remote-tracking branches and configuration settings for the remote are updated.",
                        "arguments": [
                            {
                                "name": "old",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "new",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--progress",
                                "description": "force progress reporting",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git remote rename [--[no-]progress] <old> <new>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "remove",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git remote remove <name>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "set-head",
                        "description": "Sets or deletes the default branch (i.e. the target of the symbolic-ref refs/remotes/<name>/HEAD) for the named remote. Having a default branch for a remote is not required, but allows the name of the remote to be specified in lieu of a specific branch. For example, if the default branch for origin is set to master, then origin may be specified wherever you would normally specify origin/master.",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "branch",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--auto",
                                "aliases": [
                                    "-a"
                                ],
                                "description": "set refs/remotes/<name>/HEAD according to remote",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--delete",
                                "aliases": [
                                    "-d"
                                ],
                                "description": "delete refs/remotes/<name>/HEAD",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "show",
                        "description": "Gives some information about the remote <name>.",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "-n",
                                "description": "do not query remotes"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git remote [-v | --verbose] show [-n] <name>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "prune",
                        "description": "Deletes stale references associated with <name>. By default, stale remote-tracking branches under <name> are deleted, but depending on global configuration and the configuration of the remote we might even prune local tags that haven't been pushed there. Equivalent to git fetch --prune <name>, except that no new references will be fetched.",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--dry-run",
                                "aliases": [
                                    "-n"
                                ],
                                "description": "dry run",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git remote prune [-n | --dry-run] <name>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "update",
                        "description": "Fetch updates for remotes or remote groups in the repository as defined by remotes.<group>. If neither group nor remote is specified on the command line, the configuration parameter remotes.default will be used; if remotes.default is not defined, all remotes which do not have the configuration parameter remote.<name>.skipDefaultUpdate set to true will be updated. (See git-config(1)).",
                        "arguments": [
                            {
                                "name": "group",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            },
                            {
                                "name": "remote",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--prune",
                                "aliases": [
                                    "-p"
                                ],
                                "description": "prune remotes after fetching",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "set-branches",
                        "description": "Changes the list of branches tracked by the named remote. This can be used to track a subset of the available remote branches after the initial setup for a remote.",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "branch",
                                "required": true,
                                "arity": {
                                    "minimum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--add",
                                "description": "add branch",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git remote set-branches [--add] <name> <branch>..."
                                ]
                            }
                        ]
                    },
                    {
                        "name": "get-url",
                        "description": "Retrieves the URLs for a remote. Configurations for insteadOf and pushInsteadOf are expanded here. By default, only the first URL is listed.",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--push",
                                "description": "query push URLs rather than fetch URLs",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--all",
                                "description": "return all URLs",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git remote get-url [--push] [--all] <name>"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "set-url",
                        "description": "Changes URLs for the remote. Sets first URL for remote <name> that matches regex <oldurl> (first URL if no <oldurl> is given) to <newurl>. If <oldurl> doesn't match any URL, an error occurs and nothing is changed.",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "newurl",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "oldurl",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "url",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--push",
                                "description": "manipulate push URLs",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--add",
                                "description": "add URL",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--delete",
                                "description": "delete URLs",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git remote set-url [--push] <name> <newurl> [<oldurl>]",
                                    "git remote set-url --add <name> <newurl>",
                                    "git remote set-url --delete <name> <url>"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git remote [-v | --verbose]",
                            "git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--mirror=<fetch|push>] <name> <url>",
                            "git remote rename [--[no-]progress] <old> <new>",
                            "git remote remove <name>",
                            "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)",
                            "git remote [-v | --verbose] show [-n] <name>",
                            "git remote prune [-n | --dry-run] <name>",
                            "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]",
                            "git remote set-branches [--add] <name> <branch>...",
                            "git remote get-url [--push] [--all] <name>",
                            "git remote set-url [--push] <name> <newurl> [<oldurl>]",
                            "git remote set-url --add <name> <newurl>",
                            "git remote set-url --delete <name> <url>"
                        ]
                    }
                ]
            },
            {
                "name": "repack",
                "description": "Pack unpacked objects in a repository",
                "options": [
                    {
                        "name": "-a",
                        "description": "pack everything in a single pack"
                    },
                    {
                        "name": "-A",
                        "description": "same as -a, and turn unreachable objects loose"
                    },
                    {
                        "name": "--cruft",
                        "description": "same as -a, pack unreachable cruft objects separately",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--cruft-expiration",
                        "arguments": [
                            {
                                "name": "approxidate",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "with --cruft, expire objects older than this"
                    },
                    {
                        "name": "--combine-cruft-below-size",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "with --cruft, only repack cruft packs smaller than this"
                    },
                    {
                        "name": "--max-cruft-size",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "with --cruft, limit the size of new cruft packs"
                    },
                    {
                        "name": "-d",
                        "description": "remove redundant packs, and run git-prune-packed"
                    },
                    {
                        "name": "-f",
                        "description": "pass --no-reuse-delta to git-pack-objects"
                    },
                    {
                        "name": "-F",
                        "description": "pass --no-reuse-object to git-pack-objects"
                    },
                    {
                        "name": "--name-hash-version",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "specify the name hash version to use for grouping similar objects by path"
                    },
                    {
                        "name": "-n",
                        "description": "do not run git-update-server-info"
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be quiet",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--local",
                        "aliases": [
                            "-l"
                        ],
                        "description": "pass --local to git-pack-objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--write-bitmap-index",
                        "aliases": [
                            "-b"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "write bitmap index"
                    },
                    {
                        "name": "--delta-islands",
                        "aliases": [
                            "-i"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "pass --delta-islands to git-pack-objects"
                    },
                    {
                        "name": "--unpack-unreachable",
                        "arguments": [
                            {
                                "name": "approxidate",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "with -A, do not loosen objects older than this"
                    },
                    {
                        "name": "--keep-unreachable",
                        "aliases": [
                            "-k"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "with -a, repack unreachable objects"
                    },
                    {
                        "name": "--window",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "size of the window used for delta compression",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--window-memory",
                        "arguments": [
                            {
                                "name": "bytes",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "same as the above, but limit memory size instead of entries count"
                    },
                    {
                        "name": "--depth",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "limits the maximum delta depth",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--threads",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "limits the maximum number of threads",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--max-pack-size",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "maximum size of each packfile"
                    },
                    {
                        "name": "--filter",
                        "arguments": [
                            {
                                "name": "args",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "object filtering",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--pack-kept-objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "repack objects in packs marked with .keep"
                    },
                    {
                        "name": "--keep-pack",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "do not repack this pack"
                    },
                    {
                        "name": "--geometric",
                        "aliases": [
                            "-g"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "find a geometric progression with factor <N>"
                    },
                    {
                        "name": "--write-midx",
                        "aliases": [
                            "-m"
                        ],
                        "description": "write a multi-pack index of the resulting packs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--expire-to",
                        "arguments": [
                            {
                                "name": "dir",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "pack prefix to store a pack containing pruned objects"
                    },
                    {
                        "name": "--filter-to",
                        "arguments": [
                            {
                                "name": "dir",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "pack prefix to store a pack containing filtered out objects"
                    },
                    {
                        "name": "--path-walk",
                        "description": "Pass the --path-walk option to the underlying git pack-objects process. See git-pack-objects(1) for full details.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git repack [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [-m] [--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>] [--write-midx] [--name-hash-version=<n>]"
                        ]
                    }
                ]
            },
            {
                "name": "replace",
                "description": "Create, list, delete refs to replace objects",
                "arguments": [
                    {
                        "name": "object",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "replacement",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "commit",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "parent",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "pattern",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--list",
                        "aliases": [
                            "-l"
                        ],
                        "description": "list replace refs"
                    },
                    {
                        "name": "--delete",
                        "aliases": [
                            "-d"
                        ],
                        "description": "delete replace refs"
                    },
                    {
                        "name": "--edit",
                        "aliases": [
                            "-e"
                        ],
                        "description": "edit existing object"
                    },
                    {
                        "name": "--graft",
                        "aliases": [
                            "-g"
                        ],
                        "description": "change a commit's parents"
                    },
                    {
                        "name": "--convert-graft-file",
                        "description": "convert existing graft file"
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "description": "replace the ref if it exists",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--raw",
                        "description": "do not pretty-print contents for --edit",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--format",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use this format"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git replace [-f] <object> <replacement>",
                            "git replace [-f] --edit <object>",
                            "git replace [-f] --graft <commit> [<parent>...]",
                            "git replace [-f] --convert-graft-file",
                            "git replace -d <object>...",
                            "git replace [--format=<format>] [-l [<pattern>]]"
                        ]
                    }
                ]
            },
            {
                "name": "annotate",
                "description": "Annotate file lines with commit information",
                "arguments": [
                    {
                        "name": "rev",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "file",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--incremental",
                        "description": "show blame entries as we find them, incrementally",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-b",
                        "description": "do not show object names of boundary commits (Default: off)"
                    },
                    {
                        "name": "--root",
                        "description": "do not treat root commits as boundaries (Default: off)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--show-stats",
                        "description": "show work cost statistics",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--progress",
                        "description": "force progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--score-debug",
                        "description": "show output score for blame entries",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--show-name",
                        "aliases": [
                            "-f"
                        ],
                        "description": "show original filename (Default: auto)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--show-number",
                        "aliases": [
                            "-n"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show original linenumber (Default: off)"
                    },
                    {
                        "name": "--porcelain",
                        "aliases": [
                            "-p"
                        ],
                        "description": "show in a format designed for machine consumption",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--line-porcelain",
                        "description": "show porcelain format with per-line commit information",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-c",
                        "description": "use the same output mode as git-annotate (Default: off)"
                    },
                    {
                        "name": "-t",
                        "description": "show raw timestamp (Default: off)"
                    },
                    {
                        "name": "-l",
                        "description": "show long commit SHA1 (Default: off)"
                    },
                    {
                        "name": "-s",
                        "description": "suppress author name and timestamp (Default: off)"
                    },
                    {
                        "name": "--show-email",
                        "aliases": [
                            "-e"
                        ],
                        "description": "show author email instead of name (Default: off)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-w",
                        "description": "ignore whitespace differences"
                    },
                    {
                        "name": "--ignore-rev",
                        "arguments": [
                            {
                                "name": "rev",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore <rev> when blaming"
                    },
                    {
                        "name": "--ignore-revs-file",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore revisions from <file>"
                    },
                    {
                        "name": "--color-lines",
                        "description": "color redundant metadata from previous line differently",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--color-by-age",
                        "description": "color lines by age",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--minimal",
                        "description": "spend extra cycles to find better match",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-S",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "use revisions from <file> instead of calling git-rev-list"
                    },
                    {
                        "name": "--contents",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use <file>'s contents as the final image"
                    },
                    {
                        "name": "-C",
                        "arguments": [
                            {
                                "name": "score",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "find line copies within and across files"
                    },
                    {
                        "name": "-M",
                        "arguments": [
                            {
                                "name": "score",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "find line movements within and across files"
                    },
                    {
                        "name": "-L",
                        "arguments": [
                            {
                                "name": "range",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "process only line range <start>,<end> or function :<funcname>"
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "use <n> digits to display object names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--reverse",
                        "arguments": [
                            {
                                "name": "rev..rev",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Walk history forward instead of backward. Instead of showing the revision in which a line appeared, this shows the last revision in which a line has existed. This requires a range of revision like START..END where the path to blame exists in START. git blame --reverse START is taken as git blame --reverse START..HEAD for convenience.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--first-parent",
                        "description": "Follow only the first parent commit upon seeing a merge commit. This option can be used to determine when a line was introduced to a particular integration branch, rather than when it was introduced to the history overall.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--encoding",
                        "arguments": [
                            {
                                "name": "encoding",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specifies the encoding used to output author names and commit summaries. Setting it to none makes blame output unconverted data. For more information see the discussion about encoding in the git-log(1) manual page.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--date",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specifies the format used to output dates. If --date is not provided, the value of the blame.date config variable is used. If the blame.date config variable is also not set, the iso format is used. For supported values, see the discussion of the --date option at git-log(1).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-h",
                        "description": "Show help message.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git annotate [<options>] [<rev-opts>] [<rev>] [--] <file>"
                        ]
                    }
                ]
            },
            {
                "name": "blame",
                "description": "Show what revision and author last modified each line of a file",
                "arguments": [
                    {
                        "name": "rev",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "file",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--incremental",
                        "description": "show blame entries as we find them, incrementally",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-b",
                        "description": "do not show object names of boundary commits (Default: off)"
                    },
                    {
                        "name": "--root",
                        "description": "do not treat root commits as boundaries (Default: off)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--show-stats",
                        "description": "show work cost statistics",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--progress",
                        "description": "force progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--score-debug",
                        "description": "show output score for blame entries",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--show-name",
                        "aliases": [
                            "-f"
                        ],
                        "description": "show original filename (Default: auto)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--show-number",
                        "aliases": [
                            "-n"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show original linenumber (Default: off)"
                    },
                    {
                        "name": "--porcelain",
                        "aliases": [
                            "-p"
                        ],
                        "description": "show in a format designed for machine consumption",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--line-porcelain",
                        "description": "show porcelain format with per-line commit information",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-c",
                        "description": "use the same output mode as git-annotate (Default: off)"
                    },
                    {
                        "name": "-t",
                        "description": "show raw timestamp (Default: off)"
                    },
                    {
                        "name": "-l",
                        "description": "show long commit SHA1 (Default: off)"
                    },
                    {
                        "name": "-s",
                        "description": "suppress author name and timestamp (Default: off)"
                    },
                    {
                        "name": "--show-email",
                        "aliases": [
                            "-e"
                        ],
                        "description": "show author email instead of name (Default: off)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-w",
                        "description": "ignore whitespace differences"
                    },
                    {
                        "name": "--ignore-rev",
                        "arguments": [
                            {
                                "name": "rev",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore <rev> when blaming"
                    },
                    {
                        "name": "--ignore-revs-file",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore revisions from <file>"
                    },
                    {
                        "name": "--color-lines",
                        "description": "color redundant metadata from previous line differently",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--color-by-age",
                        "description": "color lines by age",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--minimal",
                        "description": "spend extra cycles to find better match",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-S",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "use revisions from <file> instead of calling git-rev-list"
                    },
                    {
                        "name": "--contents",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use <file>'s contents as the final image"
                    },
                    {
                        "name": "-C",
                        "arguments": [
                            {
                                "name": "score",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "find line copies within and across files"
                    },
                    {
                        "name": "-M",
                        "arguments": [
                            {
                                "name": "score",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "find line movements within and across files"
                    },
                    {
                        "name": "-L",
                        "arguments": [
                            {
                                "name": "range",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "process only line range <start>,<end> or function :<funcname>"
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "use <n> digits to display object names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--reverse",
                        "arguments": [
                            {
                                "name": "rev..rev",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Walk history forward instead of backward. Instead of showing the revision in which a line appeared, this shows the last revision in which a line has existed. This requires a range of revision like START..END where the path to blame exists in START. git blame --reverse START is taken as git blame --reverse START..HEAD for convenience.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--first-parent",
                        "description": "Follow only the first parent commit upon seeing a merge commit. This option can be used to determine when a line was introduced to a particular integration branch, rather than when it was introduced to the history overall.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--encoding",
                        "arguments": [
                            {
                                "name": "encoding",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specifies the encoding used to output author names and commit summaries. Setting it to none makes blame output unconverted data. For more information see the discussion about encoding in the git-log(1) manual page.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--date",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specifies the format used to output dates. If --date is not provided, the value of the blame.date config variable is used. If the blame.date config variable is also not set, the iso format is used. For supported values, see the discussion of the --date option at git-log(1).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-h",
                        "description": "Show help message.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
                        ]
                    }
                ]
            },
            {
                "name": "bugreport",
                "description": "Collect information for user to file a bug report",
                "options": [
                    {
                        "name": "--diagnose",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "create an additional zip archive of detailed diagnostics (default 'stats')"
                    },
                    {
                        "name": "--output-directory",
                        "aliases": [
                            "-o"
                        ],
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "specify a destination for the bugreport file(s)"
                    },
                    {
                        "name": "--suffix",
                        "aliases": [
                            "-s"
                        ],
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "specify a strftime format suffix for the filename(s)"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git bugreport [(-o | --output-directory) <path>] [(-s | --suffix) <format> | --no-suffix] [--diagnose[=<mode>]]"
                        ]
                    }
                ]
            },
            {
                "name": "count-objects",
                "description": "Count unpacked number of objects and their disk consumption",
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--human-readable",
                        "aliases": [
                            "-H"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "print sizes in human readable format"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git count-objects [-v] [-H | --human-readable]"
                        ]
                    }
                ]
            },
            {
                "name": "diagnose",
                "description": "Generate a zip archive of diagnostic information",
                "options": [
                    {
                        "name": "--output-directory",
                        "aliases": [
                            "-o"
                        ],
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "specify a destination for the diagnostics archive"
                    },
                    {
                        "name": "--suffix",
                        "aliases": [
                            "-s"
                        ],
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "specify a strftime format suffix for the filename"
                    },
                    {
                        "name": "--mode",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "stats",
                                    "all"
                                ]
                            }
                        ],
                        "description": "specify the content of the diagnostic archive"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git diagnose [(-o | --output-directory) <path>] [(-s | --suffix) <format>] [--mode=<mode>]"
                        ]
                    }
                ]
            },
            {
                "name": "difftool",
                "description": "Show changes using common diff tools",
                "arguments": [
                    {
                        "name": "commit",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "path",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--gui",
                        "aliases": [
                            "-g"
                        ],
                        "description": "use `diff.guitool` instead of `diff.tool`",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--dir-diff",
                        "aliases": [
                            "-d"
                        ],
                        "description": "perform a full-directory diff",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-prompt",
                        "aliases": [
                            "-y"
                        ],
                        "description": "do not prompt before launching a diff tool"
                    },
                    {
                        "name": "--symlinks",
                        "description": "use symlinks in dir-diff mode",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--tool",
                        "aliases": [
                            "-t"
                        ],
                        "arguments": [
                            {
                                "name": "tool",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use the specified diff tool"
                    },
                    {
                        "name": "--tool-help",
                        "description": "print a list of diff tools that may be used with `--tool`",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--trust-exit-code",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "make 'git-difftool' exit when an invoked diff tool returns a non-zero exit code"
                    },
                    {
                        "name": "--extcmd",
                        "aliases": [
                            "-x"
                        ],
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "specify a custom command for viewing diffs"
                    },
                    {
                        "name": "--no-index",
                        "description": "passed to `diff`"
                    },
                    {
                        "name": "--index",
                        "description": "opposite of --no-index"
                    },
                    {
                        "name": "--prompt",
                        "description": "Prompt before each invocation of the diff tool. This is the default behaviour; the option is provided to override any configuration settings.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--rotate-to",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Start showing the diff for the given path, the paths before it will move to the end and output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--skip-to",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Start showing the diff for the given path, skipping all the paths before it.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
                        ]
                    }
                ]
            },
            {
                "name": "fsck",
                "description": "Verifies the connectivity and validity of the objects in the database",
                "arguments": [
                    {
                        "name": "object",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--unreachable",
                        "description": "show unreachable objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--dangling",
                        "description": "show dangling objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--tags",
                        "description": "report tags",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--root",
                        "description": "report root nodes",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--cache",
                        "description": "make index objects head nodes",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--reflogs",
                        "description": "make reflogs head nodes (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--full",
                        "description": "also consider packs and alternate objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--connectivity-only",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "check only connectivity"
                    },
                    {
                        "name": "--strict",
                        "description": "enable more strict checking",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--lost-found",
                        "description": "write dangling objects in .git/lost-found",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--progress",
                        "description": "show progress",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--name-objects",
                        "description": "show verbose names for reachable objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--references",
                        "description": "check reference database consistency",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs] [--[no-]full] [--strict] [--verbose] [--lost-found] [--[no-]dangling] [--[no-]progress] [--connectivity-only] [--[no-]name-objects] [--[no-]references] [<object>...]"
                        ]
                    }
                ]
            },
            {
                "name": "help",
                "description": "Display help information about Git",
                "arguments": [
                    {
                        "name": "command",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "doc",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--all",
                        "aliases": [
                            "-a"
                        ],
                        "description": "print all available commands"
                    },
                    {
                        "name": "--external-commands",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show external commands in --all"
                    },
                    {
                        "name": "--aliases",
                        "description": "show aliases in --all",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--man",
                        "aliases": [
                            "-m"
                        ],
                        "description": "show man page",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--web",
                        "aliases": [
                            "-w"
                        ],
                        "description": "show manual in web browser",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--info",
                        "aliases": [
                            "-i"
                        ],
                        "description": "show info page",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "print command description",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--guides",
                        "aliases": [
                            "-g"
                        ],
                        "description": "print list of useful guides"
                    },
                    {
                        "name": "--user-interfaces",
                        "description": "print list of user-facing repository, command and file interfaces"
                    },
                    {
                        "name": "--developer-interfaces",
                        "description": "print list of file formats, protocols and other developer interfaces"
                    },
                    {
                        "name": "--config",
                        "aliases": [
                            "-c"
                        ],
                        "description": "print all configuration variable names"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]",
                            "git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]",
                            "git help [-g|--guides]",
                            "git help [-c|--config]",
                            "git help [--user-interfaces]",
                            "git help [--developer-interfaces]"
                        ]
                    }
                ]
            },
            {
                "name": "merge-tree",
                "description": "Perform merge without touching index or working tree",
                "arguments": [
                    {
                        "name": "branch1",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "branch2",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "base-tree",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--write-tree",
                        "description": "do a real merge instead of a trivial merge"
                    },
                    {
                        "name": "--trivial-merge",
                        "description": "do a trivial merge only"
                    },
                    {
                        "name": "--messages",
                        "description": "also show informational/conflict messages",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "description": "suppress all output; only exit status wanted"
                    },
                    {
                        "name": "-z",
                        "description": "separate paths with the NUL character"
                    },
                    {
                        "name": "--name-only",
                        "description": "list filenames without modes/oids/stages"
                    },
                    {
                        "name": "--allow-unrelated-histories",
                        "description": "allow merging unrelated histories"
                    },
                    {
                        "name": "--stdin",
                        "description": "perform multiple merges, one per line of input"
                    },
                    {
                        "name": "--merge-base",
                        "arguments": [
                            {
                                "name": "tree-ish",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "specify a merge-base for the merge"
                    },
                    {
                        "name": "--strategy-option",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "option=value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "option for selected merge strategy"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git merge-tree [--write-tree] [<options>] <branch1> <branch2>",
                            "git merge-tree [--trivial-merge] <base-tree> <branch1> <branch2>"
                        ]
                    }
                ]
            },
            {
                "name": "rerere",
                "description": "Reuse recorded resolution of conflicted merges",
                "options": [
                    {
                        "name": "--rerere-autoupdate",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "register clean resolutions in index"
                    }
                ],
                "commands": [
                    {
                        "name": "clear",
                        "description": "Reset the metadata used by rerere if a merge resolution is to be aborted. Calling git am [--skip|--abort] or git rebase [--skip|--abort] will automatically invoke this command.",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git rerere [clear | forget <pathspec>... | diff | status | remaining | gc]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "forget",
                        "description": "Reset the conflict resolutions which rerere has recorded for the current conflict in <pathspec>.",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git rerere [clear | forget <pathspec>... | diff | status | remaining | gc]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "diff",
                        "description": "Display diffs for the current state of the resolution. It is useful for tracking what has changed while the user is resolving conflicts. Additional arguments are passed directly to the system diff command installed in PATH.",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git rerere [clear | forget <pathspec>... | diff | status | remaining | gc]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "status",
                        "description": "Print paths with conflicts whose merge resolution rerere will record.",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git rerere [clear | forget <pathspec>... | diff | status | remaining | gc]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "remaining",
                        "description": "Print paths with conflicts that have not been autoresolved by rerere. This includes paths whose resolutions cannot be tracked by rerere, such as conflicting submodules.",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git rerere [clear | forget <pathspec>... | diff | status | remaining | gc]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "gc",
                        "description": "Prune records of conflicted merges that occurred a long time ago. By default, unresolved conflicts older than 15 days and resolved conflicts older than 60 days are pruned. These defaults are controlled via the gc.rerereUnresolved and gc.rerereResolved configuration variables respectively.",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git rerere [clear | forget <pathspec>... | diff | status | remaining | gc]"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git rerere [clear | forget <pathspec>... | diff | status | remaining | gc]"
                        ]
                    }
                ]
            },
            {
                "name": "show-branch",
                "description": "Show branches and their commits",
                "arguments": [
                    {
                        "name": "rev",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "glob",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "ref",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--all",
                        "aliases": [
                            "-a"
                        ],
                        "description": "show remote-tracking and local branches",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--remotes",
                        "aliases": [
                            "-r"
                        ],
                        "description": "show remote-tracking branches",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--color",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "color '*!+-' corresponding to the branch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--more",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "show <n> more commits after the common ancestor",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--list",
                        "description": "synonym to more=-1",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-name",
                        "description": "suppress naming strings"
                    },
                    {
                        "name": "--name",
                        "description": "opposite of --no-name"
                    },
                    {
                        "name": "--current",
                        "description": "include the current branch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--sha1-name",
                        "description": "name commits with their object names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--merge-base",
                        "description": "show possible merge bases",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--independent",
                        "description": "show refs unreachable from any other ref",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--topo-order",
                        "description": "show commits in topological order"
                    },
                    {
                        "name": "--topics",
                        "description": "show only commits not on the first branch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--sparse",
                        "description": "show merges reachable from only one tip",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--date-order",
                        "description": "topologically sort, maintaining date order where possible"
                    },
                    {
                        "name": "--reflog",
                        "aliases": [
                            "-g"
                        ],
                        "arguments": [
                            {
                                "name": "n[,base]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "show <n> most recent ref-log entries starting at base"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order] [--current] [--color[=<when>] | --no-color] [--sparse] [--more=<n> | --list | --independent | --merge-base] [--no-name | --sha1-name] [--topics] [(<rev> | <glob>)...]",
                            "git show-branch (-g | --reflog)[=<n>[,<base>]] [--list] [<ref>]"
                        ]
                    }
                ]
            },
            {
                "name": "verify-commit",
                "description": "Check the GPG signature of commits",
                "arguments": [
                    {
                        "name": "commit",
                        "required": true,
                        "arity": {
                            "minimum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "print commit contents",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--raw",
                        "description": "print raw gpg status output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git verify-commit [-v | --verbose] [--raw] <commit>..."
                        ]
                    }
                ]
            },
            {
                "name": "verify-tag",
                "description": "Check the GPG signature of tags",
                "arguments": [
                    {
                        "name": "tag",
                        "required": true,
                        "arity": {
                            "minimum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "print tag contents",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--raw",
                        "description": "print raw gpg status output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--format",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "format to use for the output"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git verify-tag [-v | --verbose] [--format=<format>] [--raw] <tag>..."
                        ]
                    }
                ]
            },
            {
                "name": "version",
                "description": "Display version information about Git",
                "options": [
                    {
                        "name": "--build-options",
                        "description": "also print build options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git version [--build-options]"
                        ]
                    }
                ]
            },
            {
                "name": "whatchanged",
                "description": "Show logs with differences each commit introduces",
                "options": [
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "suppress diff output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--source",
                        "description": "show source",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--use-mailmap",
                        "description": "use mail map file",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--mailmap",
                        "description": "alias of --use-mailmap",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--clear-decorations",
                        "description": "clear all previously-defined decoration filters"
                    },
                    {
                        "name": "--decorate-refs",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "only decorate refs that match <pattern>"
                    },
                    {
                        "name": "--decorate-refs-exclude",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "do not decorate refs that match <pattern>"
                    },
                    {
                        "name": "--decorate",
                        "arguments": [
                            {
                                "name": "...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "decorate options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-L",
                        "arguments": [
                            {
                                "name": "range:file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "trace the evolution of line range <start>,<end> or function :<funcname> in <file>"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Ancillary Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git log [<options>] [<revision-range>] [[--] <path>...]",
                            "git show [<options>] <object>..."
                        ]
                    }
                ]
            },
            {
                "name": "imap-send",
                "description": "Send a collection of patches from stdin to an IMAP folder",
                "arguments": [
                    {
                        "name": " mbox",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be more verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be more quiet",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--curl",
                        "description": "use libcurl to communicate with the IMAP server",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--folder",
                        "aliases": [
                            "-f"
                        ],
                        "arguments": [
                            {
                                "name": "folder",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the folder in which the emails have to saved. For example: --folder=[Gmail]/Drafts or -f INBOX/Drafts.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--list",
                        "description": "Run the IMAP LIST command to output a list of all the folders present.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Interacting with Others"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git imap-send [-v] [-q] [--[no-]curl] < <mbox>"
                        ]
                    }
                ]
            },
            {
                "name": "p4",
                "description": "Import from and submit to Perforce repositories",
                "commands": [
                    {
                        "name": "clone",
                        "arguments": [
                            {
                                "name": "p4-depot-path",
                                "required": true,
                                "arity": {
                                    "minimum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git p4 clone [<sync-options>] [<clone-options>] <p4-depot-path>..."
                                ]
                            }
                        ]
                    },
                    {
                        "name": "sync",
                        "arguments": [
                            {
                                "name": "p4-depot-path",
                                "required": false,
                                "arity": {
                                    "minimum": 0
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git p4 sync [<sync-options>] [<p4-depot-path>...]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "rebase",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git p4 rebase"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "submit",
                        "arguments": [
                            {
                                "name": "master-branch-name",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git p4 submit [<submit-options>] [<master-branch-name>]"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Interacting with Others"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git p4 clone [<sync-options>] [<clone-options>] <p4-depot-path>...",
                            "git p4 sync [<sync-options>] [<p4-depot-path>...]",
                            "git p4 rebase",
                            "git p4 submit [<submit-options>] [<master-branch-name>]"
                        ]
                    }
                ]
            },
            {
                "name": "quiltimport",
                "description": "Applies a quilt patchset onto the current branch",
                "options": [
                    {
                        "name": "--dry-run",
                        "aliases": [
                            "-n"
                        ],
                        "description": "dry run",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--author",
                        "description": "author name and email address for patches without any",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--patches",
                        "description": "path to the quilt patches",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--series",
                        "description": "path to the quilt series file",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--keep-non-patch",
                        "description": "Pass -b to git mailinfo",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Interacting with Others"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git quiltimport [options]"
                        ]
                    }
                ]
            },
            {
                "name": "request-pull",
                "description": "Generates a summary of pending changes",
                "options": [
                    {
                        "name": "-p",
                        "description": "show patch text as well"
                    }
                ],
                "commands": [
                    {
                        "name": "start",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git request-pull [options] start url [end]"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Interacting with Others"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git request-pull [options] start url [end]"
                        ]
                    }
                ]
            },
            {
                "name": "send-email",
                "description": "Send a collection of patches as emails",
                "arguments": [
                    {
                        "name": "file",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "directory",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--annotate",
                        "description": "Review and edit each patch you're about to send. Default is the value of sendemail.annotate. See the CONFIGURATION section for sendemail.multiEdit.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--bcc",
                        "arguments": [
                            {
                                "name": "address,...",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify a Bcc: value for each email. Default is the value of sendemail.bcc.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cc",
                        "arguments": [
                            {
                                "name": "address,...",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify a starting Cc: value for each email. Default is the value of sendemail.cc.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--compose",
                        "description": "Invoke a text editor (see GIT_EDITOR in git-var(1)) to edit an introductory message for the patch series.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--from",
                        "arguments": [
                            {
                                "name": "address",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the sender of the emails. If not specified on the command line, the value of the sendemail.from configuration option is used. If neither the command-line option nor sendemail.from are set, then the user will be prompted for the value. The default for the prompt will be the value of GIT_AUTHOR_IDENT, or GIT_COMMITTER_IDENT if that is not set, as returned by git var -l.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--reply-to",
                        "arguments": [
                            {
                                "name": "address",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the address where replies from recipients should go to. Use this if replies to messages should go to another address than what is specified with the --from parameter.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--in-reply-to",
                        "arguments": [
                            {
                                "name": "identifier",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Make the first mail (or all the mails with --no-thread) appear as a reply to the given Message-ID, which avoids breaking threads to provide a new patch series. The second and subsequent emails will be sent as replies according to the --[no-]chain-reply-to setting.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--outlook-id-fix",
                        "description": "Microsoft Outlook SMTP servers discard the Message-ID sent via email and assign a new random Message-ID, thus breaking threads.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--subject",
                        "arguments": [
                            {
                                "name": "string",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the initial subject of the email thread. Only necessary if --compose is also set. If --compose is not set, this will be prompted for.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--to",
                        "arguments": [
                            {
                                "name": "address,...",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the primary recipient of the emails generated. Generally, this will be the upstream maintainer of the project involved. Default is the value of the sendemail.to configuration value; if that is unspecified, and --to-cmd is not specified, this will be prompted for.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--8bit-encoding",
                        "arguments": [
                            {
                                "name": "encoding",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When encountering a non-ASCII message or subject that does not declare its encoding, add headers/quoting to indicate it is encoded in <encoding>. Default is the value of the sendemail.assume8bitEncoding; if that is unspecified, this will be prompted for if any non-ASCII files are encountered.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--compose-encoding",
                        "arguments": [
                            {
                                "name": "encoding",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify encoding of compose message. Default is the value of the sendemail.composeEncoding; if that is unspecified, UTF-8 is assumed.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--transfer-encoding",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "7bit",
                                    "8bit",
                                    "quoted-printable",
                                    "base64",
                                    "auto"
                                ]
                            }
                        ],
                        "description": "Specify the transfer encoding to be used to send the message over SMTP. 7bit will fail upon encountering a non-ASCII message. quoted-printable can be useful when the repository contains files that contain carriage returns, but makes the raw patch email file (as saved from an MUA) much harder to inspect manually. base64 is even more fool proof, but also even more opaque. auto will use 8bit when possible, and quoted-printable otherwise.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--xmailer",
                        "aliases": [
                            "--no-xmailer"
                        ],
                        "description": "Add (or prevent adding) the X-Mailer: header. By default, the header is added, but it can be turned off by setting the sendemail.xmailer configuration variable to false.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--envelope-sender",
                        "arguments": [
                            {
                                "name": "address",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the envelope sender used to send the emails. This is useful if your default address is not the address that is subscribed to a list. In order to use the From address, set the value to auto. If you use the sendmail binary, you must have suitable privileges for the -f parameter. Default is the value of the sendemail.envelopeSender configuration variable; if that is unspecified, choosing the envelope sender is left to your MTA.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--sendmail-cmd",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify a command to run to send the email. The command should be sendmail-like; specifically, it must support the -i option. The command will be executed in the shell if necessary. Default is the value of sendemail.sendmailCmd. If unspecified, and if --smtp-server is also unspecified, git send-email will search for sendmail in /usr/sbin, /usr/lib and $PATH.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--smtp-encryption",
                        "arguments": [
                            {
                                "name": "encryption",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify in what way encrypting begins for the SMTP connection. Valid values are ssl and tls. Any other value reverts to plain (unencrypted) SMTP, which defaults to port 25. Despite the names, both values will use the same newer version of TLS, but for historic reasons have these names. ssl refers to \"implicit\" encryption (sometimes called SMTPS), that uses port 465 by default. tls refers to \"explicit\" encryption (often known as STARTTLS), that uses port 25 by default. Other ports might be used by the SMTP server, which are not the default. Commonly found alternative port for tls and unencrypted is 587. You need to check your provider's documentation or your server configuration to make sure for your own case. Default is the value of sendemail.smtpEncryption.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--smtp-domain",
                        "arguments": [
                            {
                                "name": "FQDN",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specifies the Fully Qualified Domain Name (FQDN) used in the HELO/EHLO command to the SMTP server. Some servers require the FQDN to match your IP address. If not set, git send-email attempts to determine your FQDN automatically. Default is the value of sendemail.smtpDomain.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--smtp-auth",
                        "arguments": [
                            {
                                "name": "mechanisms",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Whitespace-separated list of allowed SMTP-AUTH mechanisms. This setting forces using only the listed mechanisms. Example:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--smtp-pass",
                        "arguments": [
                            {
                                "name": "password",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Password for SMTP-AUTH. The argument is optional: If no argument is specified, then the empty string is used as the password. Default is the value of sendemail.smtpPass, however --smtp-pass always overrides this value.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--smtp-server",
                        "arguments": [
                            {
                                "name": "host",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "If set, specifies the outgoing SMTP server to use (e.g. smtp.example.com or a raw IP address). If unspecified, and if --sendmail-cmd is also unspecified, the default is to search for sendmail in /usr/sbin, /usr/lib and $PATH if such a program is available, falling back to localhost otherwise.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--smtp-server-port",
                        "arguments": [
                            {
                                "name": "port",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specifies a port different from the default port (SMTP servers typically listen to smtp port 25, but may also listen to submission port 587, or the common SSL smtp port 465); symbolic port names (e.g. submission instead of 587) are also accepted. The port can also be set with the sendemail.smtpServerPort configuration variable.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--smtp-server-option",
                        "arguments": [
                            {
                                "name": "option",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "If set, specifies the outgoing SMTP server option to use. Default value can be specified by the sendemail.smtpServerOption configuration option.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--smtp-ssl",
                        "description": "Legacy alias for --smtp-encryption ssl.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--smtp-ssl-cert-path",
                        "description": "Path to a store of trusted CA certificates for SMTP SSL/TLS certificate validation (either a directory that has been processed by c_rehash, or a single file containing one or more PEM format certificates concatenated together: see the description of the -CAfile <file> and the -CApath <dir> options of https://docs.openssl.org/master/man1/openssl-verify/ [OpenSSL's verify(1) manual page] for more information on these). Set it to an empty string to disable certificate verification. Defaults to the value of the sendemail.smtpSSLCertPath configuration variable, if set, or the backing SSL library's compiled-in default otherwise (which should be the best choice on most platforms).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--smtp-user",
                        "arguments": [
                            {
                                "name": "user",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Username for SMTP-AUTH. Default is the value of sendemail.smtpUser; if a username is not specified (with --smtp-user or sendemail.smtpUser), then authentication is not attempted.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--smtp-debug",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "0",
                                    "1"
                                ]
                            }
                        ],
                        "description": "Enable (1) or disable (0) debug output. If enabled, SMTP commands and replies will be printed. Useful to debug TLS connection and authentication problems.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--batch-size",
                        "arguments": [
                            {
                                "name": "num",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Some email servers (e.g. smtp.163.com) limit the number of emails to be sent per session (connection) and this will lead to a failure when sending many messages. With this option, send-email will disconnect after sending <num> messages and wait for a few seconds (see --relogin-delay) and reconnect, to work around such a limit. You may want to use some form of credential helper to avoid having to retype your password every time this happens. Defaults to the sendemail.smtpBatchSize configuration variable.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--relogin-delay",
                        "arguments": [
                            {
                                "name": "int",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Waiting <int> seconds before reconnecting to SMTP server. Used together with --batch-size option. Defaults to the sendemail.smtpReloginDelay configuration variable.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-identity",
                        "description": "Clears the previously read value of sendemail.identity set via config, if any.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--to-cmd",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify a command to execute once per patch file which should generate patch file specific To: entries. Output of this command must be single email address per line. Default is the value of sendemail.toCmd configuration value.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cc-cmd",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify a command to execute once per patch file which should generate patch file specific Cc: entries. Output of this command must be single email address per line. Default is the value of sendemail.ccCmd configuration value.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--header-cmd",
                        "arguments": [
                            {
                                "name": "command",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify a command that is executed once per outgoing message and output RFC 2822 style header lines to be inserted into them. When the sendemail.headerCmd configuration variable is set, its value is always used. When --header-cmd is provided at the command line, its value takes precedence over the sendemail.headerCmd configuration variable.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--chain-reply-to",
                        "description": "If this is set, each email will be sent as a reply to the previous email sent. If disabled with --no-chain-reply-to, all emails after the first will be sent as replies to the first email sent. When using this, it is recommended that the first file given be an overview of the entire patch series. Disabled by default, but the sendemail.chainReplyTo configuration variable can be used to enable it.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--identity",
                        "arguments": [
                            {
                                "name": "identity",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "A configuration identity. When given, causes values in the sendemail.<identity> subsection to take precedence over values in the sendemail section. The default identity is the value of sendemail.identity.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--signed-off-by-cc",
                        "description": "If this is set, add emails found in the Signed-off-by trailer or Cc: lines to the cc list. Default is the value of sendemail.signedOffByCc configuration value; if that is unspecified, default to --signed-off-by-cc.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cc-cover",
                        "description": "If this is set, emails found in Cc: headers in the first patch of the series (typically the cover letter) are added to the cc list for each email set. Default is the value of sendemail.ccCover configuration value; if that is unspecified, default to --no-cc-cover.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--to-cover",
                        "description": "If this is set, emails found in To: headers in the first patch of the series (typically the cover letter) are added to the to list for each email set. Default is the value of sendemail.toCover configuration value; if that is unspecified, default to --no-to-cover.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--suppress-cc",
                        "arguments": [
                            {
                                "name": "category",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify an additional category of recipients to suppress the auto-cc of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--suppress-from",
                        "description": "If this is set, do not add the From: address to the Cc: list. Default is the value of sendemail.suppressFrom configuration value; if that is unspecified, default to --no-suppress-from.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--thread",
                        "description": "If this is set, the In-Reply-To and References headers will be added to each email sent. Whether each mail refers to the previous email (deep threading per git format-patch wording) or to the first email (shallow threading) is governed by --[no-]chain-reply-to.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--mailmap",
                        "description": "Use the mailmap file (see gitmailmap(5)) to map all addresses to their canonical real name and email address. Additional mailmap data specific to git send-email may be provided using the sendemail.mailmap.file or sendemail.mailmap.blob configuration values. Defaults to sendemail.mailmap.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--confirm",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Confirm just before sending:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dry-run",
                        "description": "Do everything except actually send the emails.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--format-patch",
                        "description": "When an argument may be understood either as a reference or as a file name, choose to understand it as a format-patch argument (--format-patch) or as a file name (--no-format-patch). By default, when such a conflict occurs, git send-email will fail.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "description": "Make git send-email less verbose. One line per email should be all that is output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--validate",
                        "description": "Perform sanity checks on patches. Currently, validation means the following:",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--force",
                        "description": "Send emails even if safety checks would prevent it.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dump-aliases",
                        "description": "Instead of the normal operation, dump the shorthand alias names from the configured alias file(s), one per line in alphabetical order. Note that this only includes the alias name and not its expanded email addresses. See sendemail.aliasesFile for more information about aliases.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--translate-aliases",
                        "description": "Instead of the normal operation, read from standard input and interpret each line as an email alias. Translate it according to the configured alias file(s). Output each translated name and email address to standard output, one per line. See sendemail.aliasFile for more information about aliases.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Interacting with Others"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git send-email [<options>] (<file>|<directory>)...",
                            "git send-email [<options>] <format-patch-options>",
                            "git send-email --dump-aliases",
                            "git send-email --translate-aliases"
                        ]
                    }
                ]
            },
            {
                "name": "apply",
                "description": "Apply a patch to files and/or to the index",
                "arguments": [
                    {
                        "name": "patch",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--exclude",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "don't apply changes matching the given path"
                    },
                    {
                        "name": "--include",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "apply changes matching the given path"
                    },
                    {
                        "name": "-p",
                        "arguments": [
                            {
                                "name": "num",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "remove <num> leading slashes from traditional diff paths"
                    },
                    {
                        "name": "--no-add",
                        "description": "ignore additions made by the patch"
                    },
                    {
                        "name": "--add",
                        "description": "opposite of --no-add"
                    },
                    {
                        "name": "--stat",
                        "description": "instead of applying the patch, output diffstat for the input",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--numstat",
                        "description": "show number of added and deleted lines in decimal notation",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--summary",
                        "description": "instead of applying the patch, output a summary for the input",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--check",
                        "description": "instead of applying the patch, see if the patch is applicable",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--index",
                        "description": "make sure the patch is applicable to the current index",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--intent-to-add",
                        "aliases": [
                            "-N"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "mark new files with `git add --intent-to-add`"
                    },
                    {
                        "name": "--cached",
                        "description": "apply a patch without touching the working tree",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--unsafe-paths",
                        "description": "accept a patch that touches outside the working area",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--apply",
                        "description": "also apply the patch (use with --stat/--summary/--check)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--3way",
                        "aliases": [
                            "-3"
                        ],
                        "description": "attempt three-way merge, fall back on normal patch if that fails",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ours",
                        "description": "for conflicts, use our version"
                    },
                    {
                        "name": "--theirs",
                        "description": "for conflicts, use their version"
                    },
                    {
                        "name": "--union",
                        "description": "for conflicts, use a union version"
                    },
                    {
                        "name": "--build-fake-ancestor",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "build a temporary index based on embedded index information"
                    },
                    {
                        "name": "-z",
                        "description": "paths are separated with NUL character"
                    },
                    {
                        "name": "-C",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "ensure at least <n> lines of context match"
                    },
                    {
                        "name": "--whitespace",
                        "arguments": [
                            {
                                "name": "action",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "detect new or modified lines that have whitespace errors"
                    },
                    {
                        "name": "--ignore-space-change",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore changes in whitespace when finding context"
                    },
                    {
                        "name": "--ignore-whitespace",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore changes in whitespace when finding context"
                    },
                    {
                        "name": "--reverse",
                        "aliases": [
                            "-R"
                        ],
                        "description": "apply the patch in reverse",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--unidiff-zero",
                        "description": "don't expect at least one line of context",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--reject",
                        "description": "leave the rejected hunks in corresponding *.rej files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--allow-overlap",
                        "description": "allow overlapping hunks",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be more verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be more quiet",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--inaccurate-eof",
                        "description": "tolerate incorrectly detected missing new-line at the end of file",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--recount",
                        "description": "do not trust the line counts in the hunk headers",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--directory",
                        "arguments": [
                            {
                                "name": "root",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "prepend <root> to all filenames"
                    },
                    {
                        "name": "--allow-empty",
                        "description": "don't return error for empty patches",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--allow-binary-replacement",
                        "aliases": [
                            "--binary"
                        ],
                        "description": "Historically we did not allow binary patch application without an explicit permission from the user, and this flag was the way to do so. Currently, we always allow binary patch application, so this is a no-op.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git apply [<options>] [<patch>...]"
                        ]
                    }
                ]
            },
            {
                "name": "checkout-index",
                "description": "Copy files from the index to the working tree",
                "arguments": [
                    {
                        "name": "file",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--all",
                        "aliases": [
                            "-a"
                        ],
                        "description": "check out all files in the index",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ignore-skip-worktree-bits",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "do not skip files with skip-worktree set"
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "description": "force overwrite of existing files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "no warning for existing files and files not in index",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-create",
                        "aliases": [
                            "-n"
                        ],
                        "description": "don't checkout new files"
                    },
                    {
                        "name": "--create",
                        "description": "opposite of --no-create"
                    },
                    {
                        "name": "--index",
                        "aliases": [
                            "-u"
                        ],
                        "description": "update stat information in the index file",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-z",
                        "description": "paths are separated with NUL character"
                    },
                    {
                        "name": "--stdin",
                        "description": "read list of paths from the standard input",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--temp",
                        "description": "write the content to temporary files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--prefix",
                        "arguments": [
                            {
                                "name": "string",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "when creating files, prepend <string>"
                    },
                    {
                        "name": "--stage",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "1",
                                    "2",
                                    "3",
                                    "all"
                                ]
                            }
                        ],
                        "description": "copy out the files from named stage"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git checkout-index [<options>] [--] [<file>...]"
                        ]
                    }
                ]
            },
            {
                "name": "commit-graph",
                "description": "Write and verify Git commit-graph files",
                "options": [
                    {
                        "name": "--object-dir",
                        "arguments": [
                            {
                                "name": "dir",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "the object directory to store the graph"
                    }
                ],
                "commands": [
                    {
                        "name": "verify",
                        "description": "Read the commit-graph file and verify its contents against the object database. Used to check for corrupted data.",
                        "options": [
                            {
                                "name": "--shallow",
                                "description": "if the commit-graph is split, only verify the tip file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--progress",
                                "description": "force progress reporting",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "write",
                        "description": "Write a commit-graph file based on the commits found in packfiles. If the config option core.commitGraph is disabled, then this command will output a warning, then return success without writing a commit-graph file.",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--reachable",
                                "description": "start walk at all refs",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--stdin-packs",
                                "description": "scan pack-indexes listed by stdin for commits",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--stdin-commits",
                                "description": "start walk at commits listed by stdin",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--append",
                                "description": "include all commits already in the commit-graph file",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--changed-paths",
                                "description": "enable computation for changed paths",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--split",
                                "arguments": [
                                    {
                                        "name": "...",
                                        "required": false,
                                        "arity": {
                                            "minimum": 0,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "description": "allow writing an incremental commit-graph file"
                            },
                            {
                                "name": "--max-commits",
                                "arguments": [
                                    {
                                        "name": "n",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "maximum number of commits in a non-base split commit-graph"
                            },
                            {
                                "name": "--size-multiple",
                                "arguments": [
                                    {
                                        "name": "n",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "maximum ratio between two levels of a split commit-graph"
                            },
                            {
                                "name": "--expire-time",
                                "arguments": [
                                    {
                                        "name": "expiry-date",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "only expire files older than a given date-time"
                            },
                            {
                                "name": "--max-new-filters",
                                "description": "... maximum number of changed-path Bloom filters to compute",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--progress",
                                "description": "force progress reporting",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git commit-graph write [--object-dir <dir>] [--append] [--split[=<strategy>]] [--reachable | --stdin-packs | --stdin-commits] [--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress] <split-options>"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]",
                            "git commit-graph write [--object-dir <dir>] [--append] [--split[=<strategy>]] [--reachable | --stdin-packs | --stdin-commits] [--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress] <split-options>"
                        ]
                    }
                ]
            },
            {
                "name": "commit-tree",
                "description": "Create a new commit object",
                "arguments": [
                    {
                        "name": "tree",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-p",
                        "arguments": [
                            {
                                "name": "parent",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "id of a parent commit object"
                    },
                    {
                        "name": "-m",
                        "arguments": [
                            {
                                "name": "message",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "commit message"
                    },
                    {
                        "name": "-F",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "read commit log message from file"
                    },
                    {
                        "name": "--gpg-sign",
                        "aliases": [
                            "-S"
                        ],
                        "arguments": [
                            {
                                "name": "key-id",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "GPG sign commit"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git commit-tree <tree> [(-p <parent>)...]",
                            "git commit-tree [(-p <parent>)...] [-S[<keyid>]] [(-m <message>)...] [(-F <file>)...] <tree>"
                        ]
                    }
                ]
            },
            {
                "name": "hash-object",
                "description": "Compute object ID and optionally create an object from a file",
                "arguments": [
                    {
                        "name": "file",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-t",
                        "arguments": [
                            {
                                "name": "type",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "object type"
                    },
                    {
                        "name": "-w",
                        "description": "write the object into the object database"
                    },
                    {
                        "name": "--stdin",
                        "description": "read the object from stdin",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--stdin-paths",
                        "description": "read file names from stdin",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-filters",
                        "description": "store file as is without filters"
                    },
                    {
                        "name": "--filters",
                        "description": "opposite of --no-filters"
                    },
                    {
                        "name": "--literally",
                        "description": "just hash any random garbage to create corrupt objects for debugging Git",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--path",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "process file as it were from this path",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git hash-object [-t <type>] [-w] [--path=<file> | --no-filters] [--stdin [--literally]] [--] <file>...",
                            "git hash-object [-t <type>] [-w] --stdin-paths [--no-filters]"
                        ]
                    }
                ]
            },
            {
                "name": "index-pack",
                "description": "Build pack index file for an existing packed archive",
                "arguments": [
                    {
                        "name": "pack-file",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-v",
                        "description": "Be verbose about what is going on, including progress status.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-o",
                        "arguments": [
                            {
                                "name": "index-file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Write the generated pack index into the specified file. Without this option the name of pack index file is constructed from the name of packed archive file by replacing .pack with .idx (and the program fails if the name of packed archive does not end with .pack).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--rev-index",
                        "description": "When this flag is provided, generate a reverse index (a .rev file) corresponding to the given pack. If --verify is given, ensure that the existing reverse index is correct. Takes precedence over pack.writeReverseIndex.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stdin",
                        "description": "When this flag is provided, the pack is read from stdin instead and a copy is then written to <pack-file>. If <pack-file> is not specified, the pack is written to objects/pack/ directory of the current Git repository with a default name determined from the pack content. If <pack-file> is not specified consider using --keep to prevent a race condition between this process and git repack.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--fix-thin",
                        "description": "Fix a \"thin\" pack produced by git pack-objects --thin (see git-pack-objects(1) for details) by adding the excluded objects the deltified objects are based on to the pack. This option only makes sense in conjunction with --stdin.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--keep",
                        "description": "Before moving the index into its final destination create an empty .keep file for the associated pack file. This option is usually necessary with --stdin to prevent a simultaneous git repack process from deleting the newly constructed pack and index before refs can be updated to use objects contained in the pack.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--index-version",
                        "arguments": [
                            {
                                "name": "version[,offset]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This is intended to be used by the test suite only. It allows to force the version for the generated pack index, and to force 64-bit index entries on objects located above the given offset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--strict",
                        "arguments": [
                            {
                                "name": "msg-id=severity...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Die, if the pack contains broken objects or links. An optional comma-separated list of <msg-id>=<severity> can be passed to change the severity of some possible issues, e.g., --strict=\"missingEmail=ignore,badTagName=error\". See the entry for the fsck.<msg-id> configuration options in git-fsck(1) for more information on the possible values of <msg-id> and <severity>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--progress-title",
                        "description": "For internal use only.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--check-self-contained-and-connected",
                        "description": "Die if the pack contains broken links. For internal use only.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--fsck-objects",
                        "arguments": [
                            {
                                "name": "msg-id=severity...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Die if the pack contains broken objects, but unlike --strict, don't choke on broken links. If the pack contains a tree pointing to a .gitmodules blob that does not exist, prints the hash of that blob (for the caller to check) after the hash that goes into the name of the pack/idx file (see \"Notes\").",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--threads",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specifies the number of threads to spawn when resolving deltas. This requires that index-pack be compiled with pthreads otherwise this option is ignored with a warning. This is meant to reduce packing time on multiprocessor machines. The required amount of memory for the delta search window is however multiplied by the number of threads. Specifying 0 will cause Git to auto-detect the number of CPU's and use maximum 3 threads.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--max-input-size",
                        "arguments": [
                            {
                                "name": "size",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Die, if the pack is larger than <size>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--object-format",
                        "arguments": [
                            {
                                "name": "hash-algorithm",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the given object format (hash algorithm) for the pack. The valid values are sha1 and (if enabled) sha256. The default is the algorithm for the current repository (set by extensions.objectFormat), or sha1 if no value is set or outside a repository.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--promisor",
                        "arguments": [
                            {
                                "name": "message",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Before committing the pack-index, create a .promisor file for this pack. Particularly helpful when writing a promisor pack with --fix-thin since the name of the pack is not final until the pack has been fully written. If a <message> is provided, then that content will be written to the .promisor file for future reference. See partial clone[1] for more information.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--[no-]rev-index] [--verify] [--strict[=<msg-id>=<severity>...]] [--fsck-objects[=<msg-id>=<severity>...]] (<pack-file> | --stdin [--fix-thin] [<pack-file>])"
                        ]
                    }
                ]
            },
            {
                "name": "merge-file",
                "description": "Run a three-way file merge",
                "arguments": [
                    {
                        "name": "file1",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "orig-file",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "file2",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--stdout",
                        "aliases": [
                            "-p"
                        ],
                        "description": "send results to standard output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--object-id",
                        "description": "use object IDs instead of filenames",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--diff3",
                        "description": "use a diff3 based merge",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--zdiff3",
                        "description": "use a zealous diff3 based merge",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ours",
                        "description": "for conflicts, use our version",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--theirs",
                        "description": "for conflicts, use their version",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--union",
                        "description": "for conflicts, use a union version",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--diff-algorithm",
                        "arguments": [
                            {
                                "name": "algorithm",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "choose a diff algorithm"
                    },
                    {
                        "name": "--marker-size",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "for conflicts, use this marker size"
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "do not warn about conflicts",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-L",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "set labels for file1/orig-file/file2"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git merge-file [<options>] [-L <name1> [-L <orig> [-L <name2>]]] <file1> <orig-file> <file2>"
                        ]
                    }
                ]
            },
            {
                "name": "merge-index",
                "description": "Run a merge for files needing merging",
                "arguments": [
                    {
                        "name": "merge-program",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "filename",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-a",
                        "description": "Run merge against all files in the index that need merging.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-o",
                        "description": "Instead of stopping at the first failed merge, do all of them in one shot - continue with merging even when previous merges returned errors, and only return the error code after all the merges.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-q",
                        "description": "Do not complain about a failed merge program (a merge program failure usually indicates conflicts during the merge). This is for porcelains which might want to emit custom messages.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git merge-index [-o] [-q] <merge-program> (-a | [--] [<filename>...])"
                        ]
                    }
                ]
            },
            {
                "name": "mktag",
                "description": "Creates a tag object with extra validation",
                "options": [
                    {
                        "name": "--strict",
                        "description": "enable more strict checking",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git mktag"
                        ]
                    }
                ]
            },
            {
                "name": "mktree",
                "description": "Build a tree-object from ls-tree formatted text",
                "options": [
                    {
                        "name": "-z",
                        "description": "input is NUL terminated"
                    },
                    {
                        "name": "--missing",
                        "description": "allow missing objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--batch",
                        "description": "allow creation of more than one tree",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git mktree [-z] [--missing] [--batch]"
                        ]
                    }
                ]
            },
            {
                "name": "multi-pack-index",
                "description": "Write and verify multi-pack-indexes",
                "options": [
                    {
                        "name": "--object-dir",
                        "arguments": [
                            {
                                "name": "directory",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "object directory containing set of packfile and pack-index pairs"
                    }
                ],
                "commands": [
                    {
                        "name": "write",
                        "options": [
                            {
                                "name": "--preferred-pack",
                                "arguments": [
                                    {
                                        "name": "pack",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            },
                            {
                                "name": "--refs-snapshot",
                                "arguments": [
                                    {
                                        "name": "path",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git multi-pack-index [<options>] write [--preferred-pack=<pack>][--refs-snapshot=<path>]"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "verify",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git multi-pack-index [<options>] verify"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "expire",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git multi-pack-index [<options>] expire"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "repack",
                        "options": [
                            {
                                "name": "--batch-size",
                                "arguments": [
                                    {
                                        "name": "size",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-source",
                                        "value": "usage"
                                    }
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git multi-pack-index [<options>] repack [--batch-size=<size>]"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git multi-pack-index [<options>] write [--preferred-pack=<pack>][--refs-snapshot=<path>]",
                            "git multi-pack-index [<options>] verify",
                            "git multi-pack-index [<options>] expire",
                            "git multi-pack-index [<options>] repack [--batch-size=<size>]"
                        ]
                    }
                ]
            },
            {
                "name": "pack-objects",
                "description": "Create a packed archive of objects",
                "arguments": [
                    {
                        "name": " ref-list",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": " object-list",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "base-name",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "do not show progress meter",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--progress",
                        "description": "show progress meter",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--all-progress",
                        "description": "show progress meter during object writing phase",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--all-progress-implied",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "similar to --all-progress when progress meter is shown"
                    },
                    {
                        "name": "--index-version",
                        "arguments": [
                            {
                                "name": "version[,offset]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "write the pack index file in the specified idx format version"
                    },
                    {
                        "name": "--max-pack-size",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "maximum size of each output pack file"
                    },
                    {
                        "name": "--local",
                        "description": "ignore borrowed objects from alternate object store",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--incremental",
                        "description": "ignore packed objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--window",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "limit pack window by objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--window-memory",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "limit pack window by memory in addition to object limit"
                    },
                    {
                        "name": "--depth",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "maximum length of delta chain allowed in the resulting pack",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--reuse-delta",
                        "description": "reuse existing deltas",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--reuse-object",
                        "description": "reuse existing objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--delta-base-offset",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use OFS_DELTA objects"
                    },
                    {
                        "name": "--threads",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "use threads when searching for best delta matches",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--non-empty",
                        "description": "do not create an empty pack output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--revs",
                        "description": "read revision arguments from standard input",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--unpacked",
                        "description": "limit the objects to those that are not yet packed"
                    },
                    {
                        "name": "--all",
                        "description": "include objects reachable from any reference"
                    },
                    {
                        "name": "--reflog",
                        "description": "include objects referred by reflog entries"
                    },
                    {
                        "name": "--indexed-objects",
                        "description": "include objects referred to by the index"
                    },
                    {
                        "name": "--stdin-packs",
                        "description": "read packs from stdin",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--stdout",
                        "description": "output pack to stdout",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--include-tag",
                        "description": "include tag objects that refer to objects to be packed",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--keep-unreachable",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "keep unreachable objects"
                    },
                    {
                        "name": "--pack-loose-unreachable",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "pack loose unreachable objects"
                    },
                    {
                        "name": "--unpack-unreachable",
                        "arguments": [
                            {
                                "name": "time",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "unpack unreachable objects newer than <time>"
                    },
                    {
                        "name": "--cruft",
                        "description": "create a cruft pack",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--cruft-expiration",
                        "arguments": [
                            {
                                "name": "time",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "expire cruft objects older than <time>"
                    },
                    {
                        "name": "--sparse",
                        "description": "use the sparse reachability algorithm",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--thin",
                        "description": "create thin packs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--shallow",
                        "description": "create packs suitable for shallow fetches",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--honor-pack-keep",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore packs that have companion .keep file"
                    },
                    {
                        "name": "--keep-pack",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore this pack"
                    },
                    {
                        "name": "--compression",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "pack compression level"
                    },
                    {
                        "name": "--keep-true-parents",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "do not hide commits by grafts"
                    },
                    {
                        "name": "--use-bitmap-index",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use a bitmap index if available to speed up counting objects"
                    },
                    {
                        "name": "--write-bitmap-index",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "write a bitmap index together with the pack index"
                    },
                    {
                        "name": "--filter",
                        "arguments": [
                            {
                                "name": "args",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "object filtering",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--missing",
                        "arguments": [
                            {
                                "name": "action",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "handling for missing objects"
                    },
                    {
                        "name": "--exclude-promisor-objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "do not pack objects in promisor packfiles"
                    },
                    {
                        "name": "--exclude-promisor-objects-best-effort",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "implies --missing=allow-any"
                    },
                    {
                        "name": "--delta-islands",
                        "description": "respect islands during delta compression",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--uri-protocol",
                        "arguments": [
                            {
                                "name": "protocol",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "exclude any configured uploadpack.blobpackfileuri with this protocol"
                    },
                    {
                        "name": "--name-hash-version",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use the specified name-hash function to group similar objects"
                    },
                    {
                        "name": "--path-walk",
                        "description": "Perform compression by first organizing objects by path, then a second pass that compresses across paths as normal. This has the potential to improve delta compression especially in the presence of filenames that cause collisions in Git's default name-hash algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git pack-objects --stdout [<options>] [< <ref-list> | < <object-list>]",
                            "git pack-objects [<options>] <base-name> [< <ref-list> | < <object-list>]"
                        ]
                    }
                ]
            },
            {
                "name": "prune-packed",
                "description": "Remove extra objects that are already in pack files",
                "options": [
                    {
                        "name": "--dry-run",
                        "aliases": [
                            "-n"
                        ],
                        "description": "dry run",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be quiet",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git prune-packed [-n | --dry-run] [-q | --quiet]"
                        ]
                    }
                ]
            },
            {
                "name": "read-tree",
                "description": "Reads tree information into the index",
                "arguments": [
                    {
                        "name": "tree-ish1",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "tree-ish2",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "tree-ish3",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--index-output",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "write resulting index to <file>"
                    },
                    {
                        "name": "--empty",
                        "description": "only empty the index",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-m",
                        "group": "Merging",
                        "description": "perform a merge in addition to a read"
                    },
                    {
                        "name": "--trivial",
                        "group": "Merging",
                        "description": "3-way merge if no file level merging required",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--aggressive",
                        "group": "Merging",
                        "description": "3-way merge in presence of adds and removes",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--reset",
                        "group": "Merging",
                        "description": "same as -m, but discard unmerged entries",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--prefix",
                        "arguments": [
                            {
                                "name": "subdirectory/",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Merging",
                        "description": "read the tree into the index under <subdirectory>/"
                    },
                    {
                        "name": "-u",
                        "group": "Merging",
                        "description": "update working tree with merge result"
                    },
                    {
                        "name": "--exclude-per-directory",
                        "arguments": [
                            {
                                "name": "gitignore",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Merging",
                        "description": "allow explicitly ignored files to be overwritten"
                    },
                    {
                        "name": "-i",
                        "group": "Merging",
                        "description": "don't check the working tree after merging"
                    },
                    {
                        "name": "--dry-run",
                        "aliases": [
                            "-n"
                        ],
                        "group": "Merging",
                        "description": "don't update the index or the work tree",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--no-sparse-checkout",
                        "group": "Merging",
                        "description": "skip applying sparse checkout filter"
                    },
                    {
                        "name": "--sparse-checkout",
                        "group": "Merging",
                        "description": "opposite of --no-sparse-checkout"
                    },
                    {
                        "name": "--debug-unpack",
                        "group": "Merging",
                        "description": "debug unpack-trees",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--recurse-submodules",
                        "arguments": [
                            {
                                "name": "checkout",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Merging",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "control recursive updating of submodules"
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "group": "Merging",
                        "description": "suppress feedback messages",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git read-tree [(-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>) [-u | -i]] [--index-output=<file>] [--no-sparse-checkout] (--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])"
                        ]
                    }
                ]
            },
            {
                "name": "replay",
                "description": "EXPERIMENTAL: Replay commits on a new base, works with bare repos too",
                "options": [
                    {
                        "name": "--advance",
                        "arguments": [
                            {
                                "name": "branch",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "make replay advance given branch"
                    },
                    {
                        "name": "--onto",
                        "arguments": [
                            {
                                "name": "revision",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "replay onto given commit"
                    },
                    {
                        "name": "--contained",
                        "description": "advance all branches contained in revision-range",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--max-count",
                        "aliases": [
                            "-n"
                        ],
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit the output to <number> commits.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--skip",
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Skip <number> commits before starting to show the commit output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--since",
                        "aliases": [
                            "--after"
                        ],
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show commits more recent than <date>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--since-as-filter",
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show all commits more recent than <date>. This visits all commits in the range, rather than stopping at the first commit which is older than <date>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--until",
                        "aliases": [
                            "--before"
                        ],
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show commits older than <date>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--author",
                        "aliases": [
                            "--committer"
                        ],
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit the commits output to ones with author/committer header lines that match the <pattern> regular expression. With more than one --author=<pattern>, commits whose author matches any of the <pattern> are chosen (similarly for multiple --committer=<pattern>).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--grep-reflog",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit the commits output to ones with reflog entries that match the <pattern> regular expression. With more than one --grep-reflog, commits whose reflog message matches any of the given patterns are chosen. It is an error to use this option unless --walk-reflogs is in use.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--grep",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit the commits output to ones with a log message that matches the <pattern> regular expression. With more than one --grep=<pattern>, commits whose message matches any of the <pattern> are chosen (but see --all-match).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--all-match",
                        "description": "Limit the commits output to ones that match all given --grep, instead of ones that match at least one.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--invert-grep",
                        "description": "Limit the commits output to ones with a log message that do not match the <pattern> specified with --grep=<pattern>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--regexp-ignore-case",
                        "aliases": [
                            "-i"
                        ],
                        "description": "Match the regular expression limiting patterns without regard to letter case.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--basic-regexp",
                        "description": "Consider the limiting patterns to be basic regular expressions; this is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--extended-regexp",
                        "aliases": [
                            "-E"
                        ],
                        "description": "Consider the limiting patterns to be extended regular expressions instead of the default basic regular expressions.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--fixed-strings",
                        "aliases": [
                            "-F"
                        ],
                        "description": "Consider the limiting patterns to be fixed strings (don't interpret pattern as a regular expression).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--perl-regexp",
                        "aliases": [
                            "-P"
                        ],
                        "description": "Consider the limiting patterns to be Perl-compatible regular expressions.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--remove-empty",
                        "description": "Stop when a given path disappears from the tree.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--merges",
                        "description": "Print only merge commits. This is exactly the same as --min-parents=2.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--min-parents",
                        "aliases": [
                            "--max-parents",
                            "--no-min-parents",
                            "--no-max-parents"
                        ],
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show only commits which have at least (or at most) that many parent commits. In particular, --max-parents=1 is the same as --no-merges, --min-parents=2 is the same as --merges. --max-parents=0 gives all root commits and --min-parents=3 all octopus merges.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--first-parent",
                        "description": "When finding commits to include, follow only the first parent commit upon seeing a merge commit. This option can give a better overview when viewing the evolution of a particular topic branch, because merges into a topic branch tend to be only about adjusting to updated upstream from time to time, and this option allows you to ignore the individual commits brought in to your history by such a merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude-first-parent-only",
                        "description": "When finding commits to exclude (with a ^), follow only the first parent commit upon seeing a merge commit. This can be used to find the set of changes in a topic branch from the point where it diverged from the remote branch, given that arbitrary merges can be valid topic branch changes.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--not",
                        "description": "Reverses the meaning of the ^ prefix (or lack thereof) for all following revision specifiers, up to the next --not. When used on the command line before --stdin, the revisions passed through stdin will not be affected by it. Conversely, when passed via standard input, the revisions passed on the command line will not be affected by it.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--all",
                        "description": "Pretend as if all the refs in refs/, along with HEAD, are listed on the command line as <commit>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--branches",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretend as if all the refs in refs/heads are listed on the command line as <commit>. If <pattern> is given, limit branches to ones matching given shell glob. If <pattern> lacks ?, *, or [, /* at the end is implied.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--tags",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretend as if all the refs in refs/tags are listed on the command line as <commit>. If <pattern> is given, limit tags to ones matching given shell glob. If pattern lacks ?, *, or [, /* at the end is implied.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--remotes",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretend as if all the refs in refs/remotes are listed on the command line as <commit>. If <pattern> is given, limit remote-tracking branches to ones matching given shell glob. If pattern lacks ?, *, or [, /* at the end is implied.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--glob",
                        "arguments": [
                            {
                                "name": "glob-pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretend as if all the refs matching shell glob <glob-pattern> are listed on the command line as <commit>. Leading refs/, is automatically prepended if missing. If pattern lacks ?, *, or [, /* at the end is implied.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude",
                        "arguments": [
                            {
                                "name": "glob-pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Do not include refs matching <glob-pattern> that the next --all, --branches, --tags, --remotes, or --glob would otherwise consider. Repetitions of this option accumulate exclusion patterns up to the next --all, --branches, --tags, --remotes, or --glob option (other options or arguments do not clear accumulated patterns).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude-hidden",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "fetch",
                                    "receive",
                                    "uploadpack"
                                ]
                            }
                        ],
                        "description": "Do not include refs that would be hidden by git-fetch, git-receive-pack or git-upload-pack by consulting the appropriate fetch.hideRefs, receive.hideRefs or uploadpack.hideRefs configuration along with transfer.hideRefs (see git-config(1)). This option affects the next pseudo-ref option --all or --glob and is cleared after processing them.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--reflog",
                        "description": "Pretend as if all objects mentioned by reflogs are listed on the command line as <commit>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--alternate-refs",
                        "description": "Pretend as if all objects mentioned as ref tips of alternate repositories were listed on the command line. An alternate repository is any repository whose object directory is specified in objects/info/alternates. The set of included objects may be modified by core.alternateRefsCommand, etc. See git-config(1).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--single-worktree",
                        "description": "By default, all working trees will be examined by the following options when there are more than one (see git-worktree(1)): --all, --reflog and --indexed-objects. This option forces them to examine the current working tree only.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-missing",
                        "description": "Upon seeing an invalid object name in the input, pretend as if the bad input was not given.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--bisect",
                        "description": "Pretend as if the bad bisection ref refs/bisect/bad was listed and as if it was followed by --not and the good bisection refs refs/bisect/good-* on the command line.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stdin",
                        "description": "In addition to getting arguments from the command line, read them from standard input as well. This accepts commits and pseudo-options like --all and --glob=. When a -- separator is seen, the following input is treated as paths and used to limit the result. Flags like --not which are read via standard input are only respected for arguments passed in the same way and will not influence any subsequent command line arguments.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cherry-mark",
                        "description": "Like --cherry-pick (see below) but mark equivalent commits with = rather than omitting them, and inequivalent ones with +.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cherry-pick",
                        "description": "Omit any commit that introduces the same change as another commit on the \"other side\" when the set of commits are limited with symmetric difference.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--left-only",
                        "aliases": [
                            "--right-only"
                        ],
                        "description": "List only commits on the respective side of a symmetric difference, i.e. only those which would be marked < resp. > by --left-right.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cherry",
                        "description": "A synonym for --right-only --cherry-mark --no-merges; useful to limit the output to the commits on our side and mark those that have been applied to the other side of a forked history with git log --cherry upstream...mybranch, similar to git cherry upstream mybranch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--walk-reflogs",
                        "aliases": [
                            "-g"
                        ],
                        "description": "Instead of walking the commit ancestry chain, walk reflog entries from the most recent one to older ones. When this option is used you cannot specify commits to exclude (that is, ^<commit>, <commit1>..<commit2>, and <commit1>...<commit2> notations cannot be used).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--merge",
                        "description": "Show commits touching conflicted paths in the range HEAD...<other>, where <other> is the first existing pseudoref in MERGE_HEAD, CHERRY_PICK_HEAD, REVERT_HEAD or REBASE_HEAD. Only works when the index has unmerged entries. This option can be used to show relevant commits when resolving conflicts from a 3-way merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--boundary",
                        "description": "Output excluded boundary commits. Boundary commits are prefixed with -.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--simplify-by-decoration",
                        "description": "Commits that are referred by some branch or tag are selected.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-pulls",
                        "description": "Include all commits from the default mode, but also any merge commits that are not TREESAME to the first parent but are TREESAME to a later parent. This mode is helpful for showing the merge commits that \"first introduced\" a change to a branch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--full-history",
                        "description": "Same as the default mode, but does not prune some history.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dense",
                        "description": "Only the selected commits are shown, plus some to have a meaningful history.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--sparse",
                        "description": "All commits in the simplified history are shown.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--simplify-merges",
                        "description": "Additional option to --full-history to remove some needless merges from the resulting history, as there are no selected commits contributing to this merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ancestry-path",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When given a range of commits to display (e.g. <commit1>..<commit2> or <commit2> ^<commit1>), and a commit <commit> in that range, only display commits in that range that are ancestors of <commit>, descendants of <commit>, or <commit> itself. If no commit is specified, use <commit1> (the excluded part of the range) as <commit>. Can be passed multiple times; if so, a commit is included if it is any of the commits given or if it is an ancestor or descendant of one of them.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--date-order",
                        "description": "Show no parents before all of its children are shown, but otherwise show commits in the commit timestamp order.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--author-date-order",
                        "description": "Show no parents before all of its children are shown, but otherwise show commits in the author timestamp order.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--topo-order",
                        "description": "Show no parents before all of its children are shown, and avoid showing commits on multiple lines of history intermixed.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--reverse",
                        "description": "Output the commits chosen to be shown (see Commit Limiting section above) in reverse order. Cannot be combined with --walk-reflogs.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-walk",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "sorted",
                                    "unsorted"
                                ]
                            }
                        ],
                        "description": "Only show the given commits, but do not traverse their ancestors. This has no effect if a range is specified. If the argument unsorted is given, the commits are shown in the order they were given on the command line. Otherwise (if sorted or no argument was given), the commits are shown in reverse chronological order by commit time. Cannot be combined with --graph.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--do-walk",
                        "description": "Overrides a previous --no-walk.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pretty",
                        "aliases": [
                            "--format"
                        ],
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretty-print the contents of the commit logs in a given format, where <format> can be one of oneline, short, medium, full, fuller, reference, email, raw, format:<string> and tformat:<string>. When <format> is none of the above, and has %<placeholder> in it, it acts as if --pretty=tformat:<format> were given.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--abbrev-commit",
                        "description": "Instead of showing the full 40-byte hexadecimal commit object name, show a prefix that names the object uniquely. --abbrev=<n> (which also modifies diff output, if it is displayed) option can be used to specify the minimum length of the prefix.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--oneline",
                        "description": "This is a shorthand for --pretty=oneline --abbrev-commit used together.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--encoding",
                        "arguments": [
                            {
                                "name": "encoding",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Commit objects record the character encoding used for the log message in their encoding header; this option can be used to tell the command to re-code the commit log message in the encoding preferred by the user. For non plumbing commands this defaults to UTF-8. Note that if an object claims to be encoded in X and we are outputting in X, we will output the object verbatim; this means that invalid sequences in the original commit may be copied to the output. Likewise, if iconv(3) fails to convert the commit, we will quietly output the original object verbatim.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--expand-tabs",
                        "aliases": [
                            "--no-expand-tabs"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Perform a tab expansion (replace each tab with enough spaces to fill to the next display column that is a multiple of <n>) in the log message before showing it in the output. --expand-tabs is a short-hand for --expand-tabs=8, and --no-expand-tabs is a short-hand for --expand-tabs=0, which disables tab expansion.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--notes",
                        "arguments": [
                            {
                                "name": "ref",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the notes (see git-notes(1)) that annotate the commit, when showing the commit log message. This is the default for git log, git show and git whatchanged commands when there is no --pretty, --format, or --oneline option given on the command line.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-notes-by-default",
                        "description": "Show the default notes unless options for displaying specific notes are given.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-notes",
                        "aliases": [
                            "--standard-notes",
                            "--no-standard-notes"
                        ],
                        "arguments": [
                            {
                                "name": "ref",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "These options are deprecated. Use the above --notes/--no-notes options instead.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-signature",
                        "description": "Check the validity of a signed commit object by passing the signature to gpg --verify and show the output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--relative-date",
                        "description": "Synonym for --date=relative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--date",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Only takes effect for dates shown in human-readable format, such as when using --pretty. log.date config variable sets a default value for the log command's --date option. By default, dates are shown in the original time zone (either committer's or author's). If -local is appended to the format (e.g., iso-local), the user's local time zone is used instead.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--parents",
                        "description": "Print also the parents of the commit (in the form \"commit parent...\"). Also enables parent rewriting, see History Simplification above.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--children",
                        "description": "Print also the children of the commit (in the form \"commit child...\"). Also enables parent rewriting, see History Simplification above.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--left-right",
                        "description": "Mark which side of a symmetric difference a commit is reachable from. Commits from the left side are prefixed with < and those from the right with >. If combined with --boundary, those commits are prefixed with -.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--graph",
                        "description": "Draw a text-based graphical representation of the commit history on the left hand side of the output. This may cause extra lines to be printed in between commits, in order for the graph history to be drawn properly. Cannot be combined with --no-walk.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-linear-break",
                        "arguments": [
                            {
                                "name": "barrier",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When --graph is not used, all history branches are flattened which can make it hard to see that the two consecutive commits do not belong to a linear branch. This option puts a barrier in between them in that case. If <barrier> is specified, it is the string that will be shown instead of the default one.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "(EXPERIMENTAL!) git replay ([--contained] --onto <newbase> | --advance <branch>) <revision-range>..."
                        ]
                    }
                ]
            },
            {
                "name": "symbolic-ref",
                "description": "Read, modify and delete symbolic refs",
                "arguments": [
                    {
                        "name": "name",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "ref",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "suppress error message for non-symbolic (detached) refs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--delete",
                        "aliases": [
                            "-d"
                        ],
                        "description": "delete symbolic ref",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--short",
                        "description": "shorten ref output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--recurse",
                        "description": "recursively dereference (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-m",
                        "arguments": [
                            {
                                "name": "reason",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "reason of the update"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git symbolic-ref [-m <reason>] <name> <ref>",
                            "git symbolic-ref [-q] [--short] [--no-recurse] <name>",
                            "git symbolic-ref --delete [-q] <name>"
                        ]
                    }
                ]
            },
            {
                "name": "unpack-objects",
                "description": "Unpack objects from a packed archive",
                "options": [
                    {
                        "name": "-n",
                        "description": "Dry run. Check the pack file without actually unpacking the objects.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-q",
                        "description": "The command usually shows percentage progress. This flag suppresses it.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-r",
                        "description": "When unpacking a corrupt packfile, the command dies at the first corruption. This flag tells it to keep going and make the best effort to recover as many objects as possible.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--strict",
                        "description": "Don't write objects with broken content or links.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--max-input-size",
                        "arguments": [
                            {
                                "name": "size",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Die, if the pack is larger than <size>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git unpack-objects [-n] [-q] [-r] [--strict]"
                        ]
                    }
                ]
            },
            {
                "name": "update-index",
                "description": "Register file contents in the working tree to the index",
                "arguments": [
                    {
                        "name": "file",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-q",
                        "description": "continue refresh even when index needs update"
                    },
                    {
                        "name": "--ignore-submodules",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "refresh: ignore submodules"
                    },
                    {
                        "name": "--add",
                        "description": "do not ignore new files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--replace",
                        "description": "let files replace directories and vice-versa",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--remove",
                        "description": "notice files missing from worktree",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--unmerged",
                        "description": "refresh even if index contains unmerged entries",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--refresh",
                        "description": "refresh stat information"
                    },
                    {
                        "name": "--really-refresh",
                        "description": "like --refresh, but ignore assume-unchanged setting"
                    },
                    {
                        "name": "--cacheinfo",
                        "arguments": [
                            {
                                "name": "mode,object,path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "add the specified entry to the index"
                    },
                    {
                        "name": "--chmod",
                        "arguments": [
                            {
                                "name": "(+|-)x",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "override the executable bit of the listed files"
                    },
                    {
                        "name": "--assume-unchanged",
                        "description": "mark files as \"not changing\""
                    },
                    {
                        "name": "--no-assume-unchanged",
                        "description": "clear assumed-unchanged bit"
                    },
                    {
                        "name": "--skip-worktree",
                        "description": "mark files as \"index-only\""
                    },
                    {
                        "name": "--no-skip-worktree",
                        "description": "clear skip-worktree bit"
                    },
                    {
                        "name": "--ignore-skip-worktree-entries",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "do not touch index-only entries"
                    },
                    {
                        "name": "--info-only",
                        "description": "add to index only; do not add content to object database",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--force-remove",
                        "description": "remove named paths even if present in worktree",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-z",
                        "description": "with --stdin: input lines are terminated by null bytes"
                    },
                    {
                        "name": "--stdin",
                        "description": "read list of paths to be updated from standard input"
                    },
                    {
                        "name": "--index-info",
                        "description": "add entries from standard input to the index"
                    },
                    {
                        "name": "--unresolve",
                        "description": "repopulate stages #2 and #3 for the listed paths"
                    },
                    {
                        "name": "--again",
                        "aliases": [
                            "-g"
                        ],
                        "description": "only update entries that differ from HEAD"
                    },
                    {
                        "name": "--ignore-missing",
                        "description": "ignore files missing from worktree",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--verbose",
                        "description": "report actions to standard output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--clear-resolve-undo",
                        "description": "(for porcelains) forget saved unresolved conflicts"
                    },
                    {
                        "name": "--index-version",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "write index in this format"
                    },
                    {
                        "name": "--show-index-version",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "report on-disk index format version"
                    },
                    {
                        "name": "--split-index",
                        "description": "enable or disable split index",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--untracked-cache",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "enable/disable untracked cache"
                    },
                    {
                        "name": "--test-untracked-cache",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "test if the filesystem supports untracked cache"
                    },
                    {
                        "name": "--force-untracked-cache",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "enable untracked cache without testing the filesystem"
                    },
                    {
                        "name": "--force-write-index",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "write out the index even if is not flagged as changed"
                    },
                    {
                        "name": "--fsmonitor",
                        "description": "enable or disable file system monitor",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--fsmonitor-valid",
                        "description": "mark files as fsmonitor valid"
                    },
                    {
                        "name": "--no-fsmonitor-valid",
                        "description": "clear fsmonitor valid bit"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git update-index [<options>] [--] [<file>...]"
                        ]
                    }
                ]
            },
            {
                "name": "update-ref",
                "description": "Update the object name stored in a ref safely",
                "arguments": [
                    {
                        "name": "refname",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "old-oid",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "new-oid",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-m",
                        "arguments": [
                            {
                                "name": "reason",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "reason of the update"
                    },
                    {
                        "name": "-d",
                        "description": "delete the reference"
                    },
                    {
                        "name": "--no-deref",
                        "description": "update <refname> not the one it points to"
                    },
                    {
                        "name": "--deref",
                        "description": "opposite of --no-deref"
                    },
                    {
                        "name": "-z",
                        "description": "stdin has NUL-terminated arguments"
                    },
                    {
                        "name": "--stdin",
                        "description": "read updates from stdin",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--create-reflog",
                        "description": "create a reflog",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--batch-updates",
                        "aliases": [
                            "-0"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "batch reference updates"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git update-ref [<options>] -d <refname> [<old-oid>]",
                            "git update-ref [<options>]    <refname> <new-oid> [<old-oid>]",
                            "git update-ref [<options>] --stdin [-z] [--batch-updates]"
                        ]
                    }
                ]
            },
            {
                "name": "write-tree",
                "description": "Create a tree object from the current index",
                "options": [
                    {
                        "name": "--missing-ok",
                        "description": "allow missing objects",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--prefix",
                        "arguments": [
                            {
                                "name": "prefix/",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "write tree object for a subdirectory <prefix>"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Manipulators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git write-tree [--missing-ok] [--prefix=<prefix>/]"
                        ]
                    }
                ]
            },
            {
                "name": "cat-file",
                "description": "Provide contents or details of repository objects",
                "arguments": [
                    {
                        "name": "type",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "object",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "rev:path|tree-ish",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "rev",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-e",
                        "group": "Check object existence or emit object contents",
                        "description": "check if <object> exists"
                    },
                    {
                        "name": "-p",
                        "group": "Check object existence or emit object contents",
                        "description": "pretty-print <object> content"
                    },
                    {
                        "name": "-t",
                        "group": "Emit [broken] object attributes",
                        "description": "show object type (one of 'blob', 'tree', 'commit', 'tag', ...)"
                    },
                    {
                        "name": "-s",
                        "group": "Emit [broken] object attributes",
                        "description": "show object size"
                    },
                    {
                        "name": "--use-mailmap",
                        "group": "Emit [broken] object attributes",
                        "description": "use mail map file",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--mailmap",
                        "group": "Emit [broken] object attributes",
                        "description": "alias of --use-mailmap",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--batch",
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Batch objects requested on stdin (or --batch-all-objects)",
                        "description": "show full <object> or <rev> contents"
                    },
                    {
                        "name": "--batch-check",
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Batch objects requested on stdin (or --batch-all-objects)",
                        "description": "like --batch, but don't emit <contents>"
                    },
                    {
                        "name": "-Z",
                        "group": "Batch objects requested on stdin (or --batch-all-objects)",
                        "description": "stdin and stdout is NUL-terminated"
                    },
                    {
                        "name": "--batch-command",
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Batch objects requested on stdin (or --batch-all-objects)",
                        "description": "read commands from stdin"
                    },
                    {
                        "name": "--batch-all-objects",
                        "group": "Batch objects requested on stdin (or --batch-all-objects)",
                        "description": "with --batch[-check]: ignores stdin, batches all known objects"
                    },
                    {
                        "name": "--buffer",
                        "group": "Change or optimize batch output",
                        "description": "buffer --batch output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--follow-symlinks",
                        "group": "Change or optimize batch output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "follow in-tree symlinks"
                    },
                    {
                        "name": "--unordered",
                        "group": "Change or optimize batch output",
                        "description": "do not order objects before emitting them",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--textconv",
                        "group": "Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)",
                        "description": "run textconv on object's content"
                    },
                    {
                        "name": "--filters",
                        "group": "Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)",
                        "description": "run filters on object's content"
                    },
                    {
                        "name": "--path",
                        "group": "Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)",
                        "description": "blob|tree use a <path> for (--textconv | --filters); Not with 'batch'",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--filter",
                        "arguments": [
                            {
                                "name": "args",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)",
                        "description": "object filtering",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-z",
                        "description": "Only meaningful with --batch, --batch-check, or --batch-command; input is NUL-delimited instead of newline-delimited. This option is deprecated in favor of -Z as the output can otherwise be ambiguous.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git cat-file <type> <object>",
                            "git cat-file (-e | -p | -t | -s) <object>",
                            "git cat-file (--textconv | --filters) [<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]",
                            "git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects] [--buffer] [--follow-symlinks] [--unordered] [--textconv | --filters] [-Z]"
                        ]
                    }
                ]
            },
            {
                "name": "cherry",
                "description": "Find commits yet to be applied to upstream",
                "arguments": [
                    {
                        "name": "upstream",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "head",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "use <n> digits to display object names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git cherry [-v] [<upstream> [<head> [<limit>]]]"
                        ]
                    }
                ]
            },
            {
                "name": "diff-files",
                "description": "Compares files in the working tree and the index",
                "arguments": [
                    {
                        "name": "path",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--patch",
                        "aliases": [
                            "-p",
                            "-u"
                        ],
                        "description": "Generate patch (see the section called \"GENERATING PATCH TEXT WITH -P\").",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--unified",
                        "aliases": [
                            "-U"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate diffs with <n> lines of context instead of the usual three. Implies --patch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output to a specific file instead of stdout.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output-indicator-new",
                        "aliases": [
                            "--output-indicator-old",
                            "--output-indicator-context"
                        ],
                        "arguments": [
                            {
                                "name": "char",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the character used to indicate new, old or context lines in the generated patch. Normally they are +, - and ' ' respectively.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--raw",
                        "description": "Generate the diff in raw format. This is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch-with-raw",
                        "description": "Synonym for -p --raw.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--indent-heuristic",
                        "description": "Enable the heuristic that shifts diff hunk boundaries to make patches easier to read. This is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--minimal",
                        "description": "Spend extra time to make sure the smallest possible diff is produced.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patience",
                        "description": "Generate a diff using the \"patience diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--histogram",
                        "description": "Generate a diff using the \"histogram diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--anchored",
                        "arguments": [
                            {
                                "name": "text",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diff using the \"anchored diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-algorithm",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "patience",
                                    "minimal",
                                    "histogram",
                                    "myers"
                                ]
                            }
                        ],
                        "description": "Choose a diff algorithm. The variants are as follows:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stat",
                        "arguments": [
                            {
                                "name": "width[,name-width[,count]]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diffstat. By default, as much space as necessary will be used for the filename part, and the rest for the graph part. Maximum width defaults to terminal width, or 80 columns if not connected to a terminal, and can be overridden by <width>. The width of the filename part can be limited by giving another width <name-width> after a comma or by setting diff.statNameWidth=<name-width>. The width of the graph part can be limited by using --stat-graph-width=<graph-width> or by setting diff.statGraphWidth=<graph-width>. Using --stat or --stat-graph-width affects all commands generating a stat graph, while setting diff.statNameWidth or diff.statGraphWidth does not affect git format-patch. By giving a third parameter <count>, you can limit the output to the first <count> lines, followed by ... if there are more.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--compact-summary",
                        "description": "Output a condensed summary of extended header information such as file creations or deletions (\"new\" or \"gone\", optionally +l if it's a symlink) and mode changes (+x or -x for adding or removing executable bit respectively) in diffstat. The information is put between the filename part and the graph part. Implies --stat.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--numstat",
                        "description": "Similar to --stat, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two - instead of saying 0 0.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--shortstat",
                        "description": "Output only the last line of the --stat format containing total number of modified files, as well as number of added and deleted lines.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output the distribution of relative amount of changes for each sub-directory. The behavior of --dirstat can be customized by passing it a comma separated list of parameters. The defaults are controlled by the diff.dirstat configuration variable (see git-config(1)). The following parameters are available:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cumulative",
                        "description": "Synonym for --dirstat=cumulative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat-by-file",
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Synonym for --dirstat=files,<param>,....",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--summary",
                        "description": "Output a condensed summary of extended header information such as creations, renames and mode changes.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch-with-stat",
                        "description": "Synonym for -p --stat.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-z",
                        "description": "When --raw, --numstat, --name-only or --name-status has been given, do not munge pathnames and use NULs as output field terminators.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--name-only",
                        "description": "Show only the name of each changed file in the post-image tree. The file names are often encoded in UTF-8. For more information see the discussion about encoding in the git-log(1) manual page.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--name-status",
                        "description": "Show only the name(s) and status of each changed file. See the description of the --diff-filter option on what the status letters mean. Just like --name-only the file names are often encoded in UTF-8.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--submodule",
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify how differences in submodules are shown. When specifying --submodule=short the short format is used. This format just shows the names of the commits at the beginning and end of the range. When --submodule or --submodule=log is specified, the log format is used. This format lists the commits in the range like git-submodule(1) summary does. When --submodule=diff is specified, the diff format is used. This format shows an inline diff of the changes in the submodule contents between the commit range. Defaults to diff.submodule or the short format if the config option is unset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show colored diff. --color (i.e. without =<when>) is the same as --color=always. <when> can be one of always, never, or auto.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-moved",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Moved lines of code are colored differently. The <mode> defaults to no if the option is not given and to zebra if the option with no mode is given. The mode must be one of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-moved-ws",
                        "arguments": [
                            {
                                "name": "mode,...",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This configures how whitespace is ignored when performing the move detection for --color-moved. These modes can be given as a comma separated list:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--word-diff",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "By default, words are delimited by whitespace; see --word-diff-regex below. The <mode> defaults to plain, and must be one of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--word-diff-regex",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Use <regex> to decide what a word is, instead of considering runs of non-whitespace to be a word. Also implies --word-diff unless it was already enabled.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-words",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Equivalent to --word-diff=color plus (if a regex was specified) --word-diff-regex=<regex>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-renames",
                        "description": "Turn off rename detection, even when the configuration file gives the default to do so.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--rename-empty",
                        "description": "Whether to use empty blobs as rename source.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--check",
                        "description": "Warn if changes introduce conflict markers or whitespace errors. What are considered whitespace errors is controlled by core.whitespace configuration. By default, trailing whitespaces (including lines that consist solely of whitespaces) and a space character that is immediately followed by a tab character inside the initial indent of the line are considered whitespace errors. Exits with non-zero status if problems are found. Not compatible with --exit-code.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ws-error-highlight",
                        "arguments": [
                            {
                                "name": "kind",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Highlight whitespace errors in the context, old or new lines of the diff. Multiple values are separated by comma, none resets previous values, default reset the list to new and all is a shorthand for old,new,context. When this option is not given, and the configuration variable diff.wsErrorHighlight is not set, only whitespace errors in new lines are highlighted. The whitespace errors are colored with color.diff.whitespace.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--full-index",
                        "description": "Instead of the first handful of characters, show the full pre- and post-image blob object names on the \"index\" line when generating patch format output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--binary",
                        "description": "In addition to --full-index, output a binary diff that can be applied with git-apply. Implies --patch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header lines, show the shortest prefix that is at least <n> hexdigits long that uniquely refers the object. In diff-patch output format, --full-index takes higher precedence, i.e. if --full-index is specified, full blob names will be shown regardless of --abbrev. Non default number of digits can be specified with --abbrev=<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--break-rewrites",
                        "aliases": [
                            "-B"
                        ],
                        "arguments": [
                            {
                                "name": "[n][/m]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Break complete rewrite changes into pairs of delete and create. This serves two purposes:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-renames",
                        "aliases": [
                            "-M"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Detect renames. If <n> is specified, it is a threshold on the similarity index (i.e. amount of addition/deletions compared to the file's size). For example, -M90% means Git should consider a delete/add pair to be a rename if more than 90% of the file hasn't changed. Without a % sign, the number is to be read as a fraction, with a decimal point before it. I.e., -M5 becomes 0.5, and is thus the same as -M50%. Similarly, -M05 is the same as -M5%. To limit detection to exact renames, use -M100%. The default similarity index is 50%.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies",
                        "aliases": [
                            "-C"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Detect copies as well as renames. See also --find-copies-harder. If <n> is specified, it has the same meaning as for -M<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies-harder",
                        "description": "For performance reasons, by default, -C option finds copies only if the original file of the copy was modified in the same changeset. This flag makes the command inspect unmodified files as candidates for the source of copy. This is a very expensive operation for large projects, so use it with caution. Giving more than one -C option has the same effect.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--irreversible-delete",
                        "aliases": [
                            "-D"
                        ],
                        "description": "Omit the preimage for deletes, i.e. print only the header but not the diff between the preimage and /dev/null. The resulting patch is not meant to be applied with patch or git apply; this is solely for people who want to just concentrate on reviewing the text after the change. In addition, the output obviously lacks enough information to apply such a patch in reverse, even manually, hence the name of the option.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-l",
                        "arguments": [
                            {
                                "name": "num",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "The -M and -C options involve some preliminary steps that can detect subsets of renames/copies cheaply, followed by an exhaustive fallback portion that compares all remaining unpaired destinations to all relevant sources. (For renames, only remaining unpaired sources are relevant; for copies, all original sources are relevant.) For N sources and destinations, this exhaustive check is O(N^2). This option prevents the exhaustive portion of rename/copy detection from running if the number of source/destination files involved exceeds the specified number. Defaults to diff.renameLimit. Note that a value of 0 is treated as unlimited.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-filter",
                        "arguments": [
                            {
                                "name": "[(A|C|D|M|R|T|U|X|B)...[*]]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (i.e. regular file, symlink, submodule, ...) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B). Any combination of the filter characters (including none) can be used. When * (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-S",
                        "arguments": [
                            {
                                "name": "string",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences that change the number of occurrences of the specified <string> (i.e. addition/deletion) in a file. Intended for the scripter's use.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-G",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences whose patch text contains added/removed lines that match <regex>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-object",
                        "arguments": [
                            {
                                "name": "object-id",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences that change the number of occurrences of the specified object. Similar to -S, just the argument is different in that it doesn't search for a specific string but for a specific object id.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pickaxe-all",
                        "description": "When -S or -G finds a change, show all the changes in that changeset, not just the files that contain the change in <string>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pickaxe-regex",
                        "description": "Treat the <string> given to -S as an extended POSIX regular expression to match.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-O",
                        "arguments": [
                            {
                                "name": "orderfile",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Control the order in which files appear in the output. This overrides the diff.orderFile configuration variable (see git-config(1)). To cancel diff.orderFile, use -O/dev/null.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--skip-to",
                        "aliases": [
                            "--rotate-to"
                        ],
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Discard the files before the named <file> from the output (i.e. skip to), or move them to the end of the output (i.e. rotate to). These options were invented primarily for the use of the git difftool command, and may not be very useful otherwise.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-R",
                        "description": "Swap two inputs; that is, show differences from index or on-disk file to tree contents.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--relative",
                        "aliases": [
                            "--no-relative"
                        ],
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. --no-relative can be used to countermand both diff.relative config option and previous --relative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--text",
                        "aliases": [
                            "-a"
                        ],
                        "description": "Treat all files as text.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-cr-at-eol",
                        "description": "Ignore carriage-return at the end of line when doing a comparison.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-at-eol",
                        "description": "Ignore changes in whitespace at EOL.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-change",
                        "aliases": [
                            "-b"
                        ],
                        "description": "Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-all-space",
                        "aliases": [
                            "-w"
                        ],
                        "description": "Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-blank-lines",
                        "description": "Ignore changes whose lines are all blank.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-matching-lines",
                        "aliases": [
                            "-I"
                        ],
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Ignore changes whose all lines match <regex>. This option may be specified more than once.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--inter-hunk-context",
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the context between diff hunks, up to the specified <number> of lines, thereby fusing hunks that are close to each other. Defaults to diff.interHunkContext or 0 if the config option is unset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--function-context",
                        "aliases": [
                            "-W"
                        ],
                        "description": "Show whole function as context lines for each change. The function names are determined in the same way as git diff works out patch hunk headers (see \"Defining a custom hunk-header\" in gitattributes(5)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exit-code",
                        "description": "Make the program exit with codes similar to diff(1). That is, it exits with 1 if there were differences and 0 means no differences.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "description": "Disable all output of the program. Implies --exit-code. Disables execution of external diff helpers whose exit code is not trusted, i.e. their respective configuration option diff.trustExitCode or diff.<driver>.trustExitCode or environment variable GIT_EXTERNAL_DIFF_TRUST_EXIT_CODE is false.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ext-diff",
                        "description": "Allow an external diff helper to be executed. If you set an external diff driver with gitattributes(5), you need to use this option with git-log(1) and friends.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--textconv",
                        "aliases": [
                            "--no-textconv"
                        ],
                        "description": "Allow (or disallow) external text conversion filters to be run when comparing binary files. See gitattributes(5) for details. Because textconv filters are typically a one-way conversion, the resulting diff is suitable for human consumption, but cannot be applied. For this reason, textconv filters are enabled by default only for git-diff(1) and git-log(1), but not for git-format-patch(1) or diff plumbing commands.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-submodules",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "none",
                                    "untracked",
                                    "dirty",
                                    "all"
                                ]
                            }
                        ],
                        "description": "Ignore changes to submodules in the diff generation. all is the default. Using none will consider the submodule modified when it either contains untracked or modified files or its HEAD differs from the commit recorded in the superproject and can be used to override any settings of the ignore option in git-config(1) or gitmodules(5). When untracked is used submodules are not considered dirty when they only contain untracked content (but they are still scanned for modified content). Using dirty ignores all changes to the work tree of submodules, only changes to the commits stored in the superproject are shown (this was the behavior until 1.7.0). Using all hides all changes to submodules.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--src-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given source <prefix> instead of \"a/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dst-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given destination <prefix> instead of \"b/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-prefix",
                        "description": "Do not show any source or destination prefix.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--default-prefix",
                        "description": "Use the default source and destination prefixes (\"a/\" and \"b/\"). This overrides configuration variables such as diff.noprefix, diff.srcPrefix, diff.dstPrefix, and diff.mnemonicPrefix (see git-config(1)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--line-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Prepend an additional <prefix> to every line of output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ita-invisible-in-index",
                        "description": "By default entries added by git add -N appear as an existing empty file in git diff and a new file in git diff --cached. This option makes the entry appear as a new file in git diff and non-existent in git diff --cached. This option could be reverted with --ita-visible-in-index. Both options are experimental and could be removed in future.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-1",
                        "aliases": [
                            "-2",
                            "-3",
                            "-0"
                        ],
                        "description": "Diff against the \"base\" version, \"our branch\", or \"their branch\" respectively. With these options, diffs for merged entries are not shown.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cc",
                        "aliases": [
                            "-c"
                        ],
                        "description": "This compares stage 2 (our branch), stage 3 (their branch), and the working tree file and outputs a combined diff, similar to the way diff-tree shows a merge commit with these flags.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-q",
                        "description": "Remain silent even for nonexistent files",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git diff-files [-q] [-0 | -1 | -2 | -3 | -c | --cc] [<common-diff-options>] [<path>...]"
                        ]
                    }
                ]
            },
            {
                "name": "diff-index",
                "description": "Compare a tree to the working tree or index",
                "arguments": [
                    {
                        "name": "tree-ish",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "path",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--patch",
                        "aliases": [
                            "-p",
                            "-u"
                        ],
                        "description": "Generate patch (see the section called \"GENERATING PATCH TEXT WITH -P\").",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--unified",
                        "aliases": [
                            "-U"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate diffs with <n> lines of context instead of the usual three. Implies --patch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output to a specific file instead of stdout.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output-indicator-new",
                        "aliases": [
                            "--output-indicator-old",
                            "--output-indicator-context"
                        ],
                        "arguments": [
                            {
                                "name": "char",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the character used to indicate new, old or context lines in the generated patch. Normally they are +, - and ' ' respectively.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--raw",
                        "description": "Generate the diff in raw format. This is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch-with-raw",
                        "description": "Synonym for -p --raw.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--indent-heuristic",
                        "description": "Enable the heuristic that shifts diff hunk boundaries to make patches easier to read. This is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--minimal",
                        "description": "Spend extra time to make sure the smallest possible diff is produced.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patience",
                        "description": "Generate a diff using the \"patience diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--histogram",
                        "description": "Generate a diff using the \"histogram diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--anchored",
                        "arguments": [
                            {
                                "name": "text",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diff using the \"anchored diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-algorithm",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "patience",
                                    "minimal",
                                    "histogram",
                                    "myers"
                                ]
                            }
                        ],
                        "description": "Choose a diff algorithm. The variants are as follows:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stat",
                        "arguments": [
                            {
                                "name": "width[,name-width[,count]]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diffstat. By default, as much space as necessary will be used for the filename part, and the rest for the graph part. Maximum width defaults to terminal width, or 80 columns if not connected to a terminal, and can be overridden by <width>. The width of the filename part can be limited by giving another width <name-width> after a comma or by setting diff.statNameWidth=<name-width>. The width of the graph part can be limited by using --stat-graph-width=<graph-width> or by setting diff.statGraphWidth=<graph-width>. Using --stat or --stat-graph-width affects all commands generating a stat graph, while setting diff.statNameWidth or diff.statGraphWidth does not affect git format-patch. By giving a third parameter <count>, you can limit the output to the first <count> lines, followed by ... if there are more.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--compact-summary",
                        "description": "Output a condensed summary of extended header information such as file creations or deletions (\"new\" or \"gone\", optionally +l if it's a symlink) and mode changes (+x or -x for adding or removing executable bit respectively) in diffstat. The information is put between the filename part and the graph part. Implies --stat.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--numstat",
                        "description": "Similar to --stat, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two - instead of saying 0 0.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--shortstat",
                        "description": "Output only the last line of the --stat format containing total number of modified files, as well as number of added and deleted lines.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output the distribution of relative amount of changes for each sub-directory. The behavior of --dirstat can be customized by passing it a comma separated list of parameters. The defaults are controlled by the diff.dirstat configuration variable (see git-config(1)). The following parameters are available:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cumulative",
                        "description": "Synonym for --dirstat=cumulative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat-by-file",
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Synonym for --dirstat=files,<param>,....",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--summary",
                        "description": "Output a condensed summary of extended header information such as creations, renames and mode changes.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch-with-stat",
                        "description": "Synonym for -p --stat.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-z",
                        "description": "When --raw, --numstat, --name-only or --name-status has been given, do not munge pathnames and use NULs as output field terminators.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--name-only",
                        "description": "Show only the name of each changed file in the post-image tree. The file names are often encoded in UTF-8. For more information see the discussion about encoding in the git-log(1) manual page.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--name-status",
                        "description": "Show only the name(s) and status of each changed file. See the description of the --diff-filter option on what the status letters mean. Just like --name-only the file names are often encoded in UTF-8.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--submodule",
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify how differences in submodules are shown. When specifying --submodule=short the short format is used. This format just shows the names of the commits at the beginning and end of the range. When --submodule or --submodule=log is specified, the log format is used. This format lists the commits in the range like git-submodule(1) summary does. When --submodule=diff is specified, the diff format is used. This format shows an inline diff of the changes in the submodule contents between the commit range. Defaults to diff.submodule or the short format if the config option is unset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show colored diff. --color (i.e. without =<when>) is the same as --color=always. <when> can be one of always, never, or auto.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-moved",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Moved lines of code are colored differently. The <mode> defaults to no if the option is not given and to zebra if the option with no mode is given. The mode must be one of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-moved-ws",
                        "arguments": [
                            {
                                "name": "mode,...",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This configures how whitespace is ignored when performing the move detection for --color-moved. These modes can be given as a comma separated list:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--word-diff",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "By default, words are delimited by whitespace; see --word-diff-regex below. The <mode> defaults to plain, and must be one of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--word-diff-regex",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Use <regex> to decide what a word is, instead of considering runs of non-whitespace to be a word. Also implies --word-diff unless it was already enabled.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-words",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Equivalent to --word-diff=color plus (if a regex was specified) --word-diff-regex=<regex>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-renames",
                        "description": "Turn off rename detection, even when the configuration file gives the default to do so.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--rename-empty",
                        "description": "Whether to use empty blobs as rename source.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--check",
                        "description": "Warn if changes introduce conflict markers or whitespace errors. What are considered whitespace errors is controlled by core.whitespace configuration. By default, trailing whitespaces (including lines that consist solely of whitespaces) and a space character that is immediately followed by a tab character inside the initial indent of the line are considered whitespace errors. Exits with non-zero status if problems are found. Not compatible with --exit-code.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ws-error-highlight",
                        "arguments": [
                            {
                                "name": "kind",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Highlight whitespace errors in the context, old or new lines of the diff. Multiple values are separated by comma, none resets previous values, default reset the list to new and all is a shorthand for old,new,context. When this option is not given, and the configuration variable diff.wsErrorHighlight is not set, only whitespace errors in new lines are highlighted. The whitespace errors are colored with color.diff.whitespace.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--full-index",
                        "description": "Instead of the first handful of characters, show the full pre- and post-image blob object names on the \"index\" line when generating patch format output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--binary",
                        "description": "In addition to --full-index, output a binary diff that can be applied with git-apply. Implies --patch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header lines, show the shortest prefix that is at least <n> hexdigits long that uniquely refers the object. In diff-patch output format, --full-index takes higher precedence, i.e. if --full-index is specified, full blob names will be shown regardless of --abbrev. Non default number of digits can be specified with --abbrev=<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--break-rewrites",
                        "aliases": [
                            "-B"
                        ],
                        "arguments": [
                            {
                                "name": "[n][/m]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Break complete rewrite changes into pairs of delete and create. This serves two purposes:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-renames",
                        "aliases": [
                            "-M"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Detect renames. If <n> is specified, it is a threshold on the similarity index (i.e. amount of addition/deletions compared to the file's size). For example, -M90% means Git should consider a delete/add pair to be a rename if more than 90% of the file hasn't changed. Without a % sign, the number is to be read as a fraction, with a decimal point before it. I.e., -M5 becomes 0.5, and is thus the same as -M50%. Similarly, -M05 is the same as -M5%. To limit detection to exact renames, use -M100%. The default similarity index is 50%.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies",
                        "aliases": [
                            "-C"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Detect copies as well as renames. See also --find-copies-harder. If <n> is specified, it has the same meaning as for -M<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies-harder",
                        "description": "For performance reasons, by default, -C option finds copies only if the original file of the copy was modified in the same changeset. This flag makes the command inspect unmodified files as candidates for the source of copy. This is a very expensive operation for large projects, so use it with caution. Giving more than one -C option has the same effect.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--irreversible-delete",
                        "aliases": [
                            "-D"
                        ],
                        "description": "Omit the preimage for deletes, i.e. print only the header but not the diff between the preimage and /dev/null. The resulting patch is not meant to be applied with patch or git apply; this is solely for people who want to just concentrate on reviewing the text after the change. In addition, the output obviously lacks enough information to apply such a patch in reverse, even manually, hence the name of the option.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-l",
                        "arguments": [
                            {
                                "name": "num",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "The -M and -C options involve some preliminary steps that can detect subsets of renames/copies cheaply, followed by an exhaustive fallback portion that compares all remaining unpaired destinations to all relevant sources. (For renames, only remaining unpaired sources are relevant; for copies, all original sources are relevant.) For N sources and destinations, this exhaustive check is O(N^2). This option prevents the exhaustive portion of rename/copy detection from running if the number of source/destination files involved exceeds the specified number. Defaults to diff.renameLimit. Note that a value of 0 is treated as unlimited.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-filter",
                        "arguments": [
                            {
                                "name": "[(A|C|D|M|R|T|U|X|B)...[*]]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (i.e. regular file, symlink, submodule, ...) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B). Any combination of the filter characters (including none) can be used. When * (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-S",
                        "arguments": [
                            {
                                "name": "string",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences that change the number of occurrences of the specified <string> (i.e. addition/deletion) in a file. Intended for the scripter's use.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-G",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences whose patch text contains added/removed lines that match <regex>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-object",
                        "arguments": [
                            {
                                "name": "object-id",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences that change the number of occurrences of the specified object. Similar to -S, just the argument is different in that it doesn't search for a specific string but for a specific object id.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pickaxe-all",
                        "description": "When -S or -G finds a change, show all the changes in that changeset, not just the files that contain the change in <string>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pickaxe-regex",
                        "description": "Treat the <string> given to -S as an extended POSIX regular expression to match.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-O",
                        "arguments": [
                            {
                                "name": "orderfile",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Control the order in which files appear in the output. This overrides the diff.orderFile configuration variable (see git-config(1)). To cancel diff.orderFile, use -O/dev/null.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--skip-to",
                        "aliases": [
                            "--rotate-to"
                        ],
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Discard the files before the named <file> from the output (i.e. skip to), or move them to the end of the output (i.e. rotate to). These options were invented primarily for the use of the git difftool command, and may not be very useful otherwise.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-R",
                        "description": "Swap two inputs; that is, show differences from index or on-disk file to tree contents.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--relative",
                        "aliases": [
                            "--no-relative"
                        ],
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. --no-relative can be used to countermand both diff.relative config option and previous --relative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--text",
                        "aliases": [
                            "-a"
                        ],
                        "description": "Treat all files as text.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-cr-at-eol",
                        "description": "Ignore carriage-return at the end of line when doing a comparison.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-at-eol",
                        "description": "Ignore changes in whitespace at EOL.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-change",
                        "aliases": [
                            "-b"
                        ],
                        "description": "Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-all-space",
                        "aliases": [
                            "-w"
                        ],
                        "description": "Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-blank-lines",
                        "description": "Ignore changes whose lines are all blank.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-matching-lines",
                        "aliases": [
                            "-I"
                        ],
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Ignore changes whose all lines match <regex>. This option may be specified more than once.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--inter-hunk-context",
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the context between diff hunks, up to the specified <number> of lines, thereby fusing hunks that are close to each other. Defaults to diff.interHunkContext or 0 if the config option is unset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--function-context",
                        "aliases": [
                            "-W"
                        ],
                        "description": "Show whole function as context lines for each change. The function names are determined in the same way as git diff works out patch hunk headers (see \"Defining a custom hunk-header\" in gitattributes(5)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exit-code",
                        "description": "Make the program exit with codes similar to diff(1). That is, it exits with 1 if there were differences and 0 means no differences.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "description": "Disable all output of the program. Implies --exit-code. Disables execution of external diff helpers whose exit code is not trusted, i.e. their respective configuration option diff.trustExitCode or diff.<driver>.trustExitCode or environment variable GIT_EXTERNAL_DIFF_TRUST_EXIT_CODE is false.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ext-diff",
                        "description": "Allow an external diff helper to be executed. If you set an external diff driver with gitattributes(5), you need to use this option with git-log(1) and friends.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--textconv",
                        "aliases": [
                            "--no-textconv"
                        ],
                        "description": "Allow (or disallow) external text conversion filters to be run when comparing binary files. See gitattributes(5) for details. Because textconv filters are typically a one-way conversion, the resulting diff is suitable for human consumption, but cannot be applied. For this reason, textconv filters are enabled by default only for git-diff(1) and git-log(1), but not for git-format-patch(1) or diff plumbing commands.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-submodules",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "none",
                                    "untracked",
                                    "dirty",
                                    "all"
                                ]
                            }
                        ],
                        "description": "Ignore changes to submodules in the diff generation. all is the default. Using none will consider the submodule modified when it either contains untracked or modified files or its HEAD differs from the commit recorded in the superproject and can be used to override any settings of the ignore option in git-config(1) or gitmodules(5). When untracked is used submodules are not considered dirty when they only contain untracked content (but they are still scanned for modified content). Using dirty ignores all changes to the work tree of submodules, only changes to the commits stored in the superproject are shown (this was the behavior until 1.7.0). Using all hides all changes to submodules.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--src-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given source <prefix> instead of \"a/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dst-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given destination <prefix> instead of \"b/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-prefix",
                        "description": "Do not show any source or destination prefix.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--default-prefix",
                        "description": "Use the default source and destination prefixes (\"a/\" and \"b/\"). This overrides configuration variables such as diff.noprefix, diff.srcPrefix, diff.dstPrefix, and diff.mnemonicPrefix (see git-config(1)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--line-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Prepend an additional <prefix> to every line of output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ita-invisible-in-index",
                        "description": "By default entries added by git add -N appear as an existing empty file in git diff and a new file in git diff --cached. This option makes the entry appear as a new file in git diff and non-existent in git diff --cached. This option could be reverted with --ita-visible-in-index. Both options are experimental and could be removed in future.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cached",
                        "description": "Do not consider the on-disk file at all.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--merge-base",
                        "description": "Instead of comparing <tree-ish> directly, use the merge base between <tree-ish> and HEAD instead. <tree-ish> must be a commit.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-m",
                        "description": "By default, files recorded in the index but not checked out are reported as deleted. This flag makes git diff-index say that all non-checked-out files are up to date.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git diff-index [-m] [--cached] [--merge-base] [<common-diff-options>] <tree-ish> [<path>...]"
                        ]
                    }
                ]
            },
            {
                "name": "diff-pairs",
                "description": "Compare the content and mode of provided blob pairs",
                "options": [
                    {
                        "name": "--patch",
                        "aliases": [
                            "-p"
                        ],
                        "group": "Diff output format options",
                        "description": "generate patch"
                    },
                    {
                        "name": "--no-patch",
                        "aliases": [
                            "-s"
                        ],
                        "group": "Diff output format options",
                        "description": "suppress diff output"
                    },
                    {
                        "name": "-u",
                        "group": "Diff output format options",
                        "description": "generate patch"
                    },
                    {
                        "name": "--unified",
                        "aliases": [
                            "-U"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "generate diffs with <n> lines context"
                    },
                    {
                        "name": "--function-context",
                        "aliases": [
                            "-W"
                        ],
                        "group": "Diff output format options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "generate diffs with <n> lines context"
                    },
                    {
                        "name": "--raw",
                        "group": "Diff output format options",
                        "description": "generate the diff in raw format"
                    },
                    {
                        "name": "--patch-with-raw",
                        "group": "Diff output format options",
                        "description": "synonym for '-p --raw'"
                    },
                    {
                        "name": "--patch-with-stat",
                        "group": "Diff output format options",
                        "description": "synonym for '-p --stat'"
                    },
                    {
                        "name": "--numstat",
                        "group": "Diff output format options",
                        "description": "machine friendly --stat"
                    },
                    {
                        "name": "--shortstat",
                        "group": "Diff output format options",
                        "description": "output only the last line of --stat"
                    },
                    {
                        "name": "--dirstat",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "param1,param2...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "output the distribution of relative amount of changes for each sub-directory"
                    },
                    {
                        "name": "--cumulative",
                        "group": "Diff output format options",
                        "description": "synonym for --dirstat=cumulative"
                    },
                    {
                        "name": "--dirstat-by-file",
                        "arguments": [
                            {
                                "name": "param1,param2...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "synonym for --dirstat=files,<param1>,<param2>..."
                    },
                    {
                        "name": "--check",
                        "group": "Diff output format options",
                        "description": "warn if changes introduce conflict markers or whitespace errors"
                    },
                    {
                        "name": "--summary",
                        "group": "Diff output format options",
                        "description": "condensed summary such as creations, renames and mode changes"
                    },
                    {
                        "name": "--name-only",
                        "group": "Diff output format options",
                        "description": "show only names of changed files"
                    },
                    {
                        "name": "--name-status",
                        "group": "Diff output format options",
                        "description": "show only names and status of changed files"
                    },
                    {
                        "name": "--stat",
                        "arguments": [
                            {
                                "name": "width[,name-width[,count]]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "generate diffstat"
                    },
                    {
                        "name": "--stat-width",
                        "arguments": [
                            {
                                "name": "width",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "generate diffstat with a given width"
                    },
                    {
                        "name": "--stat-name-width",
                        "arguments": [
                            {
                                "name": "width",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "generate diffstat with a given name width"
                    },
                    {
                        "name": "--stat-graph-width",
                        "arguments": [
                            {
                                "name": "width",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "generate diffstat with a given graph width"
                    },
                    {
                        "name": "--stat-count",
                        "arguments": [
                            {
                                "name": "count",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "generate diffstat with limited lines"
                    },
                    {
                        "name": "--compact-summary",
                        "group": "Diff output format options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "generate compact summary in diffstat"
                    },
                    {
                        "name": "--binary",
                        "group": "Diff output format options",
                        "description": "output a binary diff that can be applied"
                    },
                    {
                        "name": "--full-index",
                        "group": "Diff output format options",
                        "description": "show full pre- and post-image object names on the \"index\" lines",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--color",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "show colored diff",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ws-error-highlight",
                        "arguments": [
                            {
                                "name": "kind",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "highlight whitespace errors in the 'context', 'old' or 'new' lines in the diff"
                    },
                    {
                        "name": "-z",
                        "group": "Diff output format options",
                        "description": "do not munge pathnames and use NULs as output field terminators in --raw or --numstat"
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "use <n> digits to display object names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--src-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "show the given source prefix instead of \"a/\""
                    },
                    {
                        "name": "--dst-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "show the given destination prefix instead of \"b/\""
                    },
                    {
                        "name": "--line-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "prepend an additional prefix to every line of output"
                    },
                    {
                        "name": "--no-prefix",
                        "group": "Diff output format options",
                        "description": "do not show any source or destination prefix"
                    },
                    {
                        "name": "--default-prefix",
                        "group": "Diff output format options",
                        "description": "use default prefixes a/ and b/"
                    },
                    {
                        "name": "--inter-hunk-context",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "show context between diff hunks up to the specified number of lines"
                    },
                    {
                        "name": "--output-indicator-new",
                        "arguments": [
                            {
                                "name": "char",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "specify the character to indicate a new line instead of '+'"
                    },
                    {
                        "name": "--output-indicator-old",
                        "arguments": [
                            {
                                "name": "char",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "specify the character to indicate an old line instead of '-'"
                    },
                    {
                        "name": "--output-indicator-context",
                        "arguments": [
                            {
                                "name": "char",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff output format options",
                        "description": "specify the character to indicate a context instead of ' '"
                    },
                    {
                        "name": "--break-rewrites",
                        "aliases": [
                            "-B"
                        ],
                        "arguments": [
                            {
                                "name": "n[/m]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff rename options",
                        "description": "break complete rewrite changes into pairs of delete and create"
                    },
                    {
                        "name": "--find-renames",
                        "aliases": [
                            "-M"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff rename options",
                        "description": "detect renames"
                    },
                    {
                        "name": "--irreversible-delete",
                        "aliases": [
                            "-D"
                        ],
                        "group": "Diff rename options",
                        "description": "omit the preimage for deletes"
                    },
                    {
                        "name": "--find-copies",
                        "aliases": [
                            "-C"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff rename options",
                        "description": "detect copies"
                    },
                    {
                        "name": "--find-copies-harder",
                        "group": "Diff rename options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use unmodified files as source to find copies"
                    },
                    {
                        "name": "--no-renames",
                        "group": "Diff rename options",
                        "description": "disable rename detection"
                    },
                    {
                        "name": "--rename-empty",
                        "group": "Diff rename options",
                        "description": "use empty blobs as rename source",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--follow",
                        "group": "Diff rename options",
                        "description": "continue listing the history of a file beyond renames",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-l",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff rename options",
                        "description": "prevent rename/copy detection if the number of rename/copy targets exceeds given limit"
                    },
                    {
                        "name": "--minimal",
                        "group": "Diff algorithm options",
                        "description": "produce the smallest possible diff"
                    },
                    {
                        "name": "--ignore-all-space",
                        "aliases": [
                            "-w"
                        ],
                        "group": "Diff algorithm options",
                        "description": "ignore whitespace when comparing lines"
                    },
                    {
                        "name": "--ignore-space-change",
                        "aliases": [
                            "-b"
                        ],
                        "group": "Diff algorithm options",
                        "description": "ignore changes in amount of whitespace"
                    },
                    {
                        "name": "--ignore-space-at-eol",
                        "group": "Diff algorithm options",
                        "description": "ignore changes in whitespace at EOL"
                    },
                    {
                        "name": "--ignore-cr-at-eol",
                        "group": "Diff algorithm options",
                        "description": "ignore carrier-return at the end of line"
                    },
                    {
                        "name": "--ignore-blank-lines",
                        "group": "Diff algorithm options",
                        "description": "ignore changes whose lines are all blank"
                    },
                    {
                        "name": "--ignore-matching-lines",
                        "aliases": [
                            "-I"
                        ],
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore changes whose all lines match <regex>"
                    },
                    {
                        "name": "--indent-heuristic",
                        "group": "Diff algorithm options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "heuristic to shift diff hunk boundaries for easy reading"
                    },
                    {
                        "name": "--patience",
                        "group": "Diff algorithm options",
                        "description": "generate diff using the \"patience diff\" algorithm"
                    },
                    {
                        "name": "--histogram",
                        "group": "Diff algorithm options",
                        "description": "generate diff using the \"histogram diff\" algorithm"
                    },
                    {
                        "name": "--diff-algorithm",
                        "arguments": [
                            {
                                "name": "algorithm",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "description": "choose a diff algorithm"
                    },
                    {
                        "name": "--anchored",
                        "arguments": [
                            {
                                "name": "text",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "description": "generate diff using the \"anchored diff\" algorithm"
                    },
                    {
                        "name": "--word-diff",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "description": "show word diff, using <mode> to delimit changed words"
                    },
                    {
                        "name": "--word-diff-regex",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "description": "use <regex> to decide what a word is"
                    },
                    {
                        "name": "--color-words",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "description": "equivalent to --word-diff=color --word-diff-regex=<regex>"
                    },
                    {
                        "name": "--color-moved",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "moved lines of code are colored differently"
                    },
                    {
                        "name": "--color-moved-ws",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Diff algorithm options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "how white spaces are ignored in --color-moved"
                    },
                    {
                        "name": "--relative",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "when run from subdir, exclude changes outside and show relative paths"
                    },
                    {
                        "name": "--text",
                        "aliases": [
                            "-a"
                        ],
                        "group": "Other diff options",
                        "description": "treat all files as text",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-R",
                        "group": "Other diff options",
                        "description": "swap two inputs, reverse the diff"
                    },
                    {
                        "name": "--exit-code",
                        "group": "Other diff options",
                        "description": "exit with 1 if there were differences, 0 otherwise",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "group": "Other diff options",
                        "description": "disable all output of the program",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ext-diff",
                        "group": "Other diff options",
                        "description": "allow an external diff helper to be executed",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--textconv",
                        "group": "Other diff options",
                        "description": "run external text conversion filters when comparing binary files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ignore-submodules",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "ignore changes to submodules in the diff generation"
                    },
                    {
                        "name": "--submodule",
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "specify how differences in submodules are shown"
                    },
                    {
                        "name": "--ita-invisible-in-index",
                        "group": "Other diff options",
                        "description": "hide 'git add -N' entries from the index"
                    },
                    {
                        "name": "--ita-visible-in-index",
                        "group": "Other diff options",
                        "description": "treat 'git add -N' entries as real in the index"
                    },
                    {
                        "name": "-S",
                        "arguments": [
                            {
                                "name": "string",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "look for differences that change the number of occurrences of the specified string"
                    },
                    {
                        "name": "-G",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "look for differences that change the number of occurrences of the specified regex"
                    },
                    {
                        "name": "--pickaxe-all",
                        "group": "Other diff options",
                        "description": "show all changes in the changeset with -S or -G"
                    },
                    {
                        "name": "--pickaxe-regex",
                        "group": "Other diff options",
                        "description": "treat <string> in -S as extended POSIX regular expression"
                    },
                    {
                        "name": "-O",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "control the order in which files appear in the output"
                    },
                    {
                        "name": "--rotate-to",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "show the change in the specified path first"
                    },
                    {
                        "name": "--skip-to",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "skip the output to the specified path"
                    },
                    {
                        "name": "--find-object",
                        "arguments": [
                            {
                                "name": "object-id",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "look for differences that change the number of occurrences of the specified object"
                    },
                    {
                        "name": "--diff-filter",
                        "arguments": [
                            {
                                "name": "(A|C|D|M|R|T|U|X|B)...[*]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "select files by diff type"
                    },
                    {
                        "name": "--output",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "group": "Other diff options",
                        "description": "output to a specific file"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git diff-pairs -z [<diff-options>]"
                        ]
                    }
                ]
            },
            {
                "name": "diff-tree",
                "description": "Compares the content and mode of blobs found via two tree objects",
                "arguments": [
                    {
                        "name": "tree-ish",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "path",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--patch",
                        "aliases": [
                            "-p",
                            "-u"
                        ],
                        "description": "Generate patch (see the section called \"GENERATING PATCH TEXT WITH -P\").",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--unified",
                        "aliases": [
                            "-U"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate diffs with <n> lines of context instead of the usual three. Implies --patch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output to a specific file instead of stdout.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output-indicator-new",
                        "aliases": [
                            "--output-indicator-old",
                            "--output-indicator-context"
                        ],
                        "arguments": [
                            {
                                "name": "char",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify the character used to indicate new, old or context lines in the generated patch. Normally they are +, - and ' ' respectively.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--raw",
                        "description": "Generate the diff in raw format. This is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch-with-raw",
                        "description": "Synonym for -p --raw.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--indent-heuristic",
                        "description": "Enable the heuristic that shifts diff hunk boundaries to make patches easier to read. This is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--minimal",
                        "description": "Spend extra time to make sure the smallest possible diff is produced.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patience",
                        "description": "Generate a diff using the \"patience diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--histogram",
                        "description": "Generate a diff using the \"histogram diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--anchored",
                        "arguments": [
                            {
                                "name": "text",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diff using the \"anchored diff\" algorithm.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-algorithm",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "patience",
                                    "minimal",
                                    "histogram",
                                    "myers"
                                ]
                            }
                        ],
                        "description": "Choose a diff algorithm. The variants are as follows:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stat",
                        "arguments": [
                            {
                                "name": "width[,name-width[,count]]",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Generate a diffstat. By default, as much space as necessary will be used for the filename part, and the rest for the graph part. Maximum width defaults to terminal width, or 80 columns if not connected to a terminal, and can be overridden by <width>. The width of the filename part can be limited by giving another width <name-width> after a comma or by setting diff.statNameWidth=<name-width>. The width of the graph part can be limited by using --stat-graph-width=<graph-width> or by setting diff.statGraphWidth=<graph-width>. Using --stat or --stat-graph-width affects all commands generating a stat graph, while setting diff.statNameWidth or diff.statGraphWidth does not affect git format-patch. By giving a third parameter <count>, you can limit the output to the first <count> lines, followed by ... if there are more.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--compact-summary",
                        "description": "Output a condensed summary of extended header information such as file creations or deletions (\"new\" or \"gone\", optionally +l if it's a symlink) and mode changes (+x or -x for adding or removing executable bit respectively) in diffstat. The information is put between the filename part and the graph part. Implies --stat.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--numstat",
                        "description": "Similar to --stat, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two - instead of saying 0 0.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--shortstat",
                        "description": "Output only the last line of the --stat format containing total number of modified files, as well as number of added and deleted lines.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Output the distribution of relative amount of changes for each sub-directory. The behavior of --dirstat can be customized by passing it a comma separated list of parameters. The defaults are controlled by the diff.dirstat configuration variable (see git-config(1)). The following parameters are available:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cumulative",
                        "description": "Synonym for --dirstat=cumulative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dirstat-by-file",
                        "arguments": [
                            {
                                "name": "param,...",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Synonym for --dirstat=files,<param>,....",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--summary",
                        "description": "Output a condensed summary of extended header information such as creations, renames and mode changes.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--patch-with-stat",
                        "description": "Synonym for -p --stat.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-z",
                        "description": "When --raw, --numstat, --name-only or --name-status has been given, do not munge pathnames and use NULs as output field terminators.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--name-only",
                        "description": "Show only the name of each changed file in the post-image tree. The file names are often encoded in UTF-8. For more information see the discussion about encoding in the git-log(1) manual page.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--name-status",
                        "description": "Show only the name(s) and status of each changed file. See the description of the --diff-filter option on what the status letters mean. Just like --name-only the file names are often encoded in UTF-8.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--submodule",
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Specify how differences in submodules are shown. When specifying --submodule=short the short format is used. This format just shows the names of the commits at the beginning and end of the range. When --submodule or --submodule=log is specified, the log format is used. This format lists the commits in the range like git-submodule(1) summary does. When --submodule=diff is specified, the diff format is used. This format shows an inline diff of the changes in the submodule contents between the commit range. Defaults to diff.submodule or the short format if the config option is unset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show colored diff. --color (i.e. without =<when>) is the same as --color=always. <when> can be one of always, never, or auto.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-moved",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Moved lines of code are colored differently. The <mode> defaults to no if the option is not given and to zebra if the option with no mode is given. The mode must be one of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-moved-ws",
                        "arguments": [
                            {
                                "name": "mode,...",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "This configures how whitespace is ignored when performing the move detection for --color-moved. These modes can be given as a comma separated list:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--word-diff",
                        "arguments": [
                            {
                                "name": "mode",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "By default, words are delimited by whitespace; see --word-diff-regex below. The <mode> defaults to plain, and must be one of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--word-diff-regex",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Use <regex> to decide what a word is, instead of considering runs of non-whitespace to be a word. Also implies --word-diff unless it was already enabled.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--color-words",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Equivalent to --word-diff=color plus (if a regex was specified) --word-diff-regex=<regex>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-renames",
                        "description": "Turn off rename detection, even when the configuration file gives the default to do so.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--rename-empty",
                        "description": "Whether to use empty blobs as rename source.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--check",
                        "description": "Warn if changes introduce conflict markers or whitespace errors. What are considered whitespace errors is controlled by core.whitespace configuration. By default, trailing whitespaces (including lines that consist solely of whitespaces) and a space character that is immediately followed by a tab character inside the initial indent of the line are considered whitespace errors. Exits with non-zero status if problems are found. Not compatible with --exit-code.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ws-error-highlight",
                        "arguments": [
                            {
                                "name": "kind",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Highlight whitespace errors in the context, old or new lines of the diff. Multiple values are separated by comma, none resets previous values, default reset the list to new and all is a shorthand for old,new,context. When this option is not given, and the configuration variable diff.wsErrorHighlight is not set, only whitespace errors in new lines are highlighted. The whitespace errors are colored with color.diff.whitespace.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--full-index",
                        "description": "Instead of the first handful of characters, show the full pre- and post-image blob object names on the \"index\" line when generating patch format output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--binary",
                        "description": "In addition to --full-index, output a binary diff that can be applied with git-apply. Implies --patch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header lines, show the shortest prefix that is at least <n> hexdigits long that uniquely refers the object. In diff-patch output format, --full-index takes higher precedence, i.e. if --full-index is specified, full blob names will be shown regardless of --abbrev. Non default number of digits can be specified with --abbrev=<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--break-rewrites",
                        "aliases": [
                            "-B"
                        ],
                        "arguments": [
                            {
                                "name": "[n][/m]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Break complete rewrite changes into pairs of delete and create. This serves two purposes:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-renames",
                        "aliases": [
                            "-M"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Detect renames. If <n> is specified, it is a threshold on the similarity index (i.e. amount of addition/deletions compared to the file's size). For example, -M90% means Git should consider a delete/add pair to be a rename if more than 90% of the file hasn't changed. Without a % sign, the number is to be read as a fraction, with a decimal point before it. I.e., -M5 becomes 0.5, and is thus the same as -M50%. Similarly, -M05 is the same as -M5%. To limit detection to exact renames, use -M100%. The default similarity index is 50%.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies",
                        "aliases": [
                            "-C"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Detect copies as well as renames. See also --find-copies-harder. If <n> is specified, it has the same meaning as for -M<n>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-copies-harder",
                        "description": "For performance reasons, by default, -C option finds copies only if the original file of the copy was modified in the same changeset. This flag makes the command inspect unmodified files as candidates for the source of copy. This is a very expensive operation for large projects, so use it with caution. Giving more than one -C option has the same effect.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--irreversible-delete",
                        "aliases": [
                            "-D"
                        ],
                        "description": "Omit the preimage for deletes, i.e. print only the header but not the diff between the preimage and /dev/null. The resulting patch is not meant to be applied with patch or git apply; this is solely for people who want to just concentrate on reviewing the text after the change. In addition, the output obviously lacks enough information to apply such a patch in reverse, even manually, hence the name of the option.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-l",
                        "arguments": [
                            {
                                "name": "num",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "The -M and -C options involve some preliminary steps that can detect subsets of renames/copies cheaply, followed by an exhaustive fallback portion that compares all remaining unpaired destinations to all relevant sources. (For renames, only remaining unpaired sources are relevant; for copies, all original sources are relevant.) For N sources and destinations, this exhaustive check is O(N^2). This option prevents the exhaustive portion of rename/copy detection from running if the number of source/destination files involved exceeds the specified number. Defaults to diff.renameLimit. Note that a value of 0 is treated as unlimited.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--diff-filter",
                        "arguments": [
                            {
                                "name": "[(A|C|D|M|R|T|U|X|B)...[*]]",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (i.e. regular file, symlink, submodule, ...) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B). Any combination of the filter characters (including none) can be used. When * (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-S",
                        "arguments": [
                            {
                                "name": "string",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences that change the number of occurrences of the specified <string> (i.e. addition/deletion) in a file. Intended for the scripter's use.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-G",
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences whose patch text contains added/removed lines that match <regex>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--find-object",
                        "arguments": [
                            {
                                "name": "object-id",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Look for differences that change the number of occurrences of the specified object. Similar to -S, just the argument is different in that it doesn't search for a specific string but for a specific object id.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pickaxe-all",
                        "description": "When -S or -G finds a change, show all the changes in that changeset, not just the files that contain the change in <string>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pickaxe-regex",
                        "description": "Treat the <string> given to -S as an extended POSIX regular expression to match.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-O",
                        "arguments": [
                            {
                                "name": "orderfile",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Control the order in which files appear in the output. This overrides the diff.orderFile configuration variable (see git-config(1)). To cancel diff.orderFile, use -O/dev/null.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--skip-to",
                        "aliases": [
                            "--rotate-to"
                        ],
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Discard the files before the named <file> from the output (i.e. skip to), or move them to the end of the output (i.e. rotate to). These options were invented primarily for the use of the git difftool command, and may not be very useful otherwise.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-R",
                        "description": "Swap two inputs; that is, show differences from index or on-disk file to tree contents.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--relative",
                        "aliases": [
                            "--no-relative"
                        ],
                        "arguments": [
                            {
                                "name": "path",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. --no-relative can be used to countermand both diff.relative config option and previous --relative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--text",
                        "aliases": [
                            "-a"
                        ],
                        "description": "Treat all files as text.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-cr-at-eol",
                        "description": "Ignore carriage-return at the end of line when doing a comparison.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-at-eol",
                        "description": "Ignore changes in whitespace at EOL.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-space-change",
                        "aliases": [
                            "-b"
                        ],
                        "description": "Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-all-space",
                        "aliases": [
                            "-w"
                        ],
                        "description": "Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-blank-lines",
                        "description": "Ignore changes whose lines are all blank.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-matching-lines",
                        "aliases": [
                            "-I"
                        ],
                        "arguments": [
                            {
                                "name": "regex",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Ignore changes whose all lines match <regex>. This option may be specified more than once.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--inter-hunk-context",
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the context between diff hunks, up to the specified <number> of lines, thereby fusing hunks that are close to each other. Defaults to diff.interHunkContext or 0 if the config option is unset.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--function-context",
                        "aliases": [
                            "-W"
                        ],
                        "description": "Show whole function as context lines for each change. The function names are determined in the same way as git diff works out patch hunk headers (see \"Defining a custom hunk-header\" in gitattributes(5)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exit-code",
                        "description": "Make the program exit with codes similar to diff(1). That is, it exits with 1 if there were differences and 0 means no differences.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "description": "Disable all output of the program. Implies --exit-code. Disables execution of external diff helpers whose exit code is not trusted, i.e. their respective configuration option diff.trustExitCode or diff.<driver>.trustExitCode or environment variable GIT_EXTERNAL_DIFF_TRUST_EXIT_CODE is false.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ext-diff",
                        "description": "Allow an external diff helper to be executed. If you set an external diff driver with gitattributes(5), you need to use this option with git-log(1) and friends.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--textconv",
                        "aliases": [
                            "--no-textconv"
                        ],
                        "description": "Allow (or disallow) external text conversion filters to be run when comparing binary files. See gitattributes(5) for details. Because textconv filters are typically a one-way conversion, the resulting diff is suitable for human consumption, but cannot be applied. For this reason, textconv filters are enabled by default only for git-diff(1) and git-log(1), but not for git-format-patch(1) or diff plumbing commands.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-submodules",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "none",
                                    "untracked",
                                    "dirty",
                                    "all"
                                ]
                            }
                        ],
                        "description": "Ignore changes to submodules in the diff generation. all is the default. Using none will consider the submodule modified when it either contains untracked or modified files or its HEAD differs from the commit recorded in the superproject and can be used to override any settings of the ignore option in git-config(1) or gitmodules(5). When untracked is used submodules are not considered dirty when they only contain untracked content (but they are still scanned for modified content). Using dirty ignores all changes to the work tree of submodules, only changes to the commits stored in the superproject are shown (this was the behavior until 1.7.0). Using all hides all changes to submodules.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--src-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given source <prefix> instead of \"a/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dst-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the given destination <prefix> instead of \"b/\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-prefix",
                        "description": "Do not show any source or destination prefix.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--default-prefix",
                        "description": "Use the default source and destination prefixes (\"a/\" and \"b/\"). This overrides configuration variables such as diff.noprefix, diff.srcPrefix, diff.dstPrefix, and diff.mnemonicPrefix (see git-config(1)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--line-prefix",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Prepend an additional <prefix> to every line of output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ita-invisible-in-index",
                        "description": "By default entries added by git add -N appear as an existing empty file in git diff and a new file in git diff --cached. This option makes the entry appear as a new file in git diff and non-existent in git diff --cached. This option could be reverted with --ita-visible-in-index. Both options are experimental and could be removed in future.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-r",
                        "description": "Recurse into sub-trees.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-t",
                        "description": "Show tree entry itself as well as subtrees. Implies -r.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--root",
                        "description": "When --root is specified the initial commit will be shown as a big creation event. This is equivalent to a diff against the NULL tree.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--merge-base",
                        "description": "Instead of comparing the <tree-ish>s directly, use the merge base between the two <tree-ish>s as the \"before\" side. There must be two <tree-ish>s given and they must both be commits.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stdin",
                        "description": "When --stdin is specified, the command does not take <tree-ish> arguments from the command line. Instead, it reads lines containing either two <tree>, one <commit>, or a list of <commit> from its standard input. (Use a single space as separator.)",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-m",
                        "description": "By default, git diff-tree --stdin does not show differences for merge commits. With this flag, it shows differences to that commit from all of its parents. See also -c.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-s",
                        "description": "By default, git diff-tree --stdin shows differences, either in machine-readable form (without -p) or in patch form (with -p). This output can be suppressed. It is only useful with the -v flag.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-v",
                        "description": "This flag causes git diff-tree --stdin to also show the commit message before the differences.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pretty",
                        "aliases": [
                            "--format"
                        ],
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretty-print the contents of the commit logs in a given format, where <format> can be one of oneline, short, medium, full, fuller, reference, email, raw, format:<string> and tformat:<string>. When <format> is none of the above, and has %<placeholder> in it, it acts as if --pretty=tformat:<format> were given.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--abbrev-commit",
                        "description": "Instead of showing the full 40-byte hexadecimal commit object name, show a prefix that names the object uniquely. --abbrev=<n> (which also modifies diff output, if it is displayed) option can be used to specify the minimum length of the prefix.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--oneline",
                        "description": "This is a shorthand for --pretty=oneline --abbrev-commit used together.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--encoding",
                        "arguments": [
                            {
                                "name": "encoding",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Commit objects record the character encoding used for the log message in their encoding header; this option can be used to tell the command to re-code the commit log message in the encoding preferred by the user. For non plumbing commands this defaults to UTF-8. Note that if an object claims to be encoded in X and we are outputting in X, we will output the object verbatim; this means that invalid sequences in the original commit may be copied to the output. Likewise, if iconv(3) fails to convert the commit, we will quietly output the original object verbatim.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--expand-tabs",
                        "aliases": [
                            "--no-expand-tabs"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Perform a tab expansion (replace each tab with enough spaces to fill to the next display column that is a multiple of <n>) in the log message before showing it in the output. --expand-tabs is a short-hand for --expand-tabs=8, and --no-expand-tabs is a short-hand for --expand-tabs=0, which disables tab expansion.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--notes",
                        "arguments": [
                            {
                                "name": "ref",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show the notes (see git-notes(1)) that annotate the commit, when showing the commit log message. This is the default for git log, git show and git whatchanged commands when there is no --pretty, --format, or --oneline option given on the command line.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-notes-by-default",
                        "description": "Show the default notes unless options for displaying specific notes are given.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-notes",
                        "aliases": [
                            "--standard-notes",
                            "--no-standard-notes"
                        ],
                        "arguments": [
                            {
                                "name": "ref",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "These options are deprecated. Use the above --notes/--no-notes options instead.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-signature",
                        "description": "Check the validity of a signed commit object by passing the signature to gpg --verify and show the output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-commit-id",
                        "description": "git diff-tree outputs a line with the commit ID when applicable. This flag suppresses the commit ID output.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-c",
                        "description": "This flag changes the way a merge commit is displayed (which means it is useful only when the command is given one <tree-ish>, or --stdin). It shows the differences from each of the parents to the merge result simultaneously instead of showing pairwise diff between a parent and the result one at a time (which is what the -m option does). Furthermore, it lists only files which were modified from all parents.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cc",
                        "description": "This flag changes the way a merge commit patch is displayed, in a similar way to the -c option. It implies the -c and -p options and further compresses the patch output by omitting uninteresting hunks whose contents in the parents have only two variants and the merge result picks one of them without modification. When all hunks are uninteresting, the commit itself and the commit log message are not shown, just like in any other \"empty diff\" case.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--combined-all-paths",
                        "description": "This flag causes combined diffs (used for merge commits) to list the name of the file from all parents. It thus only has effect when -c or --cc are specified, and is likely only useful if filename changes are detected (i.e. when either rename or copy detection have been requested).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--always",
                        "description": "Show the commit itself and the commit log message even if the diff itself is empty.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git diff-tree [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty] [-t] [-r] [-c | --cc] [--combined-all-paths] [--root] [--merge-base] [<common-diff-options>] <tree-ish> [<tree-ish>] [<path>...]"
                        ]
                    }
                ]
            },
            {
                "name": "for-each-ref",
                "description": "Output information on each ref",
                "arguments": [
                    {
                        "name": "pattern",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--shell",
                        "aliases": [
                            "-s"
                        ],
                        "description": "quote placeholders suitably for shells",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--perl",
                        "aliases": [
                            "-p"
                        ],
                        "description": "quote placeholders suitably for perl",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--python",
                        "description": "quote placeholders suitably for python",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--tcl",
                        "description": "quote placeholders suitably for Tcl",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--omit-empty",
                        "description": "do not output a newline after empty formatted refs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--count",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "show only <n> matched refs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--format",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "format to use for the output"
                    },
                    {
                        "name": "--color",
                        "arguments": [
                            {
                                "name": "when",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "respect format colors",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--exclude",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "exclude refs which match pattern"
                    },
                    {
                        "name": "--sort",
                        "arguments": [
                            {
                                "name": "key",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "field name to sort on",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--points-at",
                        "arguments": [
                            {
                                "name": "object",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "print only refs which points at the given object"
                    },
                    {
                        "name": "--merged",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "print only refs that are merged"
                    },
                    {
                        "name": "--no-merged",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "print only refs that are not merged"
                    },
                    {
                        "name": "--contains",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "print only refs which contain the commit"
                    },
                    {
                        "name": "--no-contains",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "print only refs which don't contain the commit"
                    },
                    {
                        "name": "--ignore-case",
                        "description": "sorting and filtering are case insensitive",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--stdin",
                        "description": "read reference patterns from stdin",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--include-root-refs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "also include HEAD ref and pseudorefs"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git for-each-ref [<options>] [<pattern>]",
                            "git for-each-ref [--points-at <object>]",
                            "git for-each-ref [--merged [<commit>]] [--no-merged [<commit>]]",
                            "git for-each-ref [--contains [<commit>]] [--no-contains [<commit>]]"
                        ]
                    }
                ]
            },
            {
                "name": "for-each-repo",
                "description": "Run a Git command on a list of repositories",
                "arguments": [
                    {
                        "name": "arguments",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--config",
                        "arguments": [
                            {
                                "name": "config",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "config key storing a list of repository paths"
                    },
                    {
                        "name": "--keep-going",
                        "description": "keep going even if command fails in a repository",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git for-each-repo --config=<config> [--] <arguments>"
                        ]
                    }
                ]
            },
            {
                "name": "get-tar-commit-id",
                "description": "Extract commit ID from an archive created using git-archive",
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git get-tar-commit-id"
                        ]
                    }
                ]
            },
            {
                "name": "ls-files",
                "description": "Show information about files in the index and the working tree",
                "arguments": [
                    {
                        "name": "file",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-z",
                        "description": "separate paths with the NUL character"
                    },
                    {
                        "name": "-t",
                        "description": "identify the file status with tags"
                    },
                    {
                        "name": "-v",
                        "description": "use lowercase letters for 'assume unchanged' files"
                    },
                    {
                        "name": "-f",
                        "description": "use lowercase letters for 'fsmonitor clean' files"
                    },
                    {
                        "name": "--cached",
                        "aliases": [
                            "-c"
                        ],
                        "description": "show cached files in the output (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--deleted",
                        "aliases": [
                            "-d"
                        ],
                        "description": "show deleted files in the output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--modified",
                        "aliases": [
                            "-m"
                        ],
                        "description": "show modified files in the output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--others",
                        "aliases": [
                            "-o"
                        ],
                        "description": "show other files in the output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--ignored",
                        "aliases": [
                            "-i"
                        ],
                        "description": "show ignored files in the output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--stage",
                        "aliases": [
                            "-s"
                        ],
                        "description": "show staged contents' object name in the output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--killed",
                        "aliases": [
                            "-k"
                        ],
                        "description": "show files on the filesystem that need to be removed",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--directory",
                        "description": "show 'other' directories' names only",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--eol",
                        "description": "show line endings of files",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--empty-directory",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "don't show empty directories"
                    },
                    {
                        "name": "--unmerged",
                        "aliases": [
                            "-u"
                        ],
                        "description": "show unmerged files in the output",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--resolve-undo",
                        "description": "show resolve-undo information",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--exclude",
                        "aliases": [
                            "-x"
                        ],
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "skip files matching pattern"
                    },
                    {
                        "name": "--exclude-from",
                        "aliases": [
                            "-X"
                        ],
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "read exclude patterns from <file>"
                    },
                    {
                        "name": "--exclude-per-directory",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "read additional per-directory exclude patterns in <file>"
                    },
                    {
                        "name": "--exclude-standard",
                        "description": "add the standard git exclusions"
                    },
                    {
                        "name": "--full-name",
                        "description": "make the output relative to the project top directory"
                    },
                    {
                        "name": "--recurse-submodules",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "recurse through submodules"
                    },
                    {
                        "name": "--error-unmatch",
                        "description": "if any <file> is not in the index, treat this as an error",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--with-tree",
                        "arguments": [
                            {
                                "name": "tree-ish",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "pretend that paths removed since <tree-ish> are still present"
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "use <n> digits to display object names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--debug",
                        "description": "show debugging data",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--deduplicate",
                        "description": "suppress duplicate entries",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--sparse",
                        "description": "show sparse directories in the presence of a sparse index",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--format",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "format to use for the output"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git ls-files [<options>] [<file>...]"
                        ]
                    }
                ]
            },
            {
                "name": "ls-remote",
                "description": "List references in a remote repository",
                "arguments": [
                    {
                        "name": "repository",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "patterns",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "do not print remote URL",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--upload-pack",
                        "arguments": [
                            {
                                "name": "exec",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "path of git-upload-pack on the remote host"
                    },
                    {
                        "name": "--tags",
                        "aliases": [
                            "-t"
                        ],
                        "description": "limit to tags",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--branches",
                        "aliases": [
                            "-b"
                        ],
                        "description": "limit to branches",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--refs",
                        "description": "do not show peeled tags",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--get-url",
                        "description": "take url.<base>.insteadOf into account",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--sort",
                        "arguments": [
                            {
                                "name": "key",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "field name to sort on",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--exit-code",
                        "description": "exit with exit code 2 if no matching refs are found",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--symref",
                        "description": "show underlying ref in addition to the object pointed by it",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--server-option",
                        "aliases": [
                            "-o"
                        ],
                        "arguments": [
                            {
                                "name": "server-specific",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "option to transmit"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git ls-remote [--branches] [--tags] [--refs] [--upload-pack=<exec>] [-q | --quiet] [--exit-code] [--get-url] [--sort=<key>] [--symref] [<repository> [<patterns>...]]"
                        ]
                    }
                ]
            },
            {
                "name": "ls-tree",
                "description": "List the contents of a tree object",
                "arguments": [
                    {
                        "name": "tree-ish",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "path",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-d",
                        "description": "only show trees"
                    },
                    {
                        "name": "-r",
                        "description": "recurse into subtrees"
                    },
                    {
                        "name": "-t",
                        "description": "show trees when recursing"
                    },
                    {
                        "name": "-z",
                        "description": "terminate entries with NUL byte"
                    },
                    {
                        "name": "--long",
                        "aliases": [
                            "-l"
                        ],
                        "description": "include object size"
                    },
                    {
                        "name": "--name-only",
                        "description": "list only filenames"
                    },
                    {
                        "name": "--name-status",
                        "description": "list only filenames"
                    },
                    {
                        "name": "--object-only",
                        "description": "list only objects"
                    },
                    {
                        "name": "--full-name",
                        "description": "use full path names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--full-tree",
                        "description": "list entire tree; not just current directory (implies --full-name)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--format",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "format to use for the output"
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "use <n> digits to display object names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git ls-tree [<options>] <tree-ish> [<path>...]"
                        ]
                    }
                ]
            },
            {
                "name": "merge-base",
                "description": "Find as good common ancestors as possible for a merge",
                "arguments": [
                    {
                        "name": "commit",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "ref",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--all",
                        "aliases": [
                            "-a"
                        ],
                        "description": "output all common ancestors",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--octopus",
                        "description": "find ancestors for a single n-way merge"
                    },
                    {
                        "name": "--independent",
                        "description": "list revs not reachable from others"
                    },
                    {
                        "name": "--is-ancestor",
                        "description": "is the first one ancestor of the other?"
                    },
                    {
                        "name": "--fork-point",
                        "description": "find where <commit> forked from reflog of <ref>"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git merge-base [-a | --all] <commit> <commit>...",
                            "git merge-base [-a | --all] --octopus <commit>...",
                            "git merge-base --is-ancestor <commit> <commit>",
                            "git merge-base --independent <commit>...",
                            "git merge-base --fork-point <ref> [<commit>]"
                        ]
                    }
                ]
            },
            {
                "name": "name-rev",
                "description": "Find symbolic names for given revs",
                "arguments": [
                    {
                        "name": "commit",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--name-only",
                        "description": "print only ref-based names (no object names)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--tags",
                        "description": "only use tags to name the commits",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--refs",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "only use refs matching <pattern>",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--exclude",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "ignore refs matching <pattern>"
                    },
                    {
                        "name": "--all",
                        "description": "list all commits reachable from all refs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--annotate-stdin",
                        "description": "annotate text from stdin",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--undefined",
                        "description": "allow to print `undefined` names (default)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--always",
                        "description": "show abbreviated commit object as fallback",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git name-rev [<options>] <commit>...",
                            "git name-rev [<options>] --all",
                            "git name-rev [<options>] --annotate-stdin"
                        ]
                    }
                ]
            },
            {
                "name": "pack-redundant",
                "description": "Find redundant pack files",
                "arguments": [
                    {
                        "name": "pack-filename",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--all",
                        "description": "Processes all packs. Any filenames on the command line are ignored.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--alt-odb",
                        "description": "Don't require objects present in packs from alternate object database (odb) directories to be present in local packs.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--verbose",
                        "description": "Outputs some statistics to stderr. Has a small performance penalty.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git pack-redundant [--verbose] [--alt-odb] (--all | <pack-filename>...)"
                        ]
                    }
                ]
            },
            {
                "name": "rev-list",
                "description": "Lists commit objects in reverse chronological order",
                "arguments": [
                    {
                        "name": "commit",
                        "required": true,
                        "arity": {
                            "minimum": 1
                        }
                    },
                    {
                        "name": "path",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--max-count",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ]
                    },
                    {
                        "name": "--max-age",
                        "arguments": [
                            {
                                "name": "epoch",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ]
                    },
                    {
                        "name": "--min-age",
                        "arguments": [
                            {
                                "name": "epoch",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ]
                    },
                    {
                        "name": "--sparse"
                    },
                    {
                        "name": "--no-merges"
                    },
                    {
                        "name": "--min-parents",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ]
                    },
                    {
                        "name": "--no-min-parents"
                    },
                    {
                        "name": "--max-parents",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ]
                    },
                    {
                        "name": "--no-max-parents"
                    },
                    {
                        "name": "--remove-empty"
                    },
                    {
                        "name": "--all"
                    },
                    {
                        "name": "--branches"
                    },
                    {
                        "name": "--tags"
                    },
                    {
                        "name": "--remotes"
                    },
                    {
                        "name": "--stdin"
                    },
                    {
                        "name": "--exclude-hidden",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "fetch",
                                    "receive",
                                    "uploadpack"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "--quiet"
                    },
                    {
                        "name": "--topo-order"
                    },
                    {
                        "name": "--date-order"
                    },
                    {
                        "name": "--reverse"
                    },
                    {
                        "name": "--parents"
                    },
                    {
                        "name": "--children"
                    },
                    {
                        "name": "--objects",
                        "description": "| --objects-edge"
                    },
                    {
                        "name": "--disk-usage",
                        "arguments": [
                            {
                                "name": "human",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ]
                    },
                    {
                        "name": "--unpacked"
                    },
                    {
                        "name": "--header",
                        "description": "| --pretty"
                    },
                    {
                        "name": "--object-names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "| --no-abbrev"
                    },
                    {
                        "name": "--abbrev-commit"
                    },
                    {
                        "name": "--left-right"
                    },
                    {
                        "name": "--count"
                    },
                    {
                        "name": "-z"
                    },
                    {
                        "name": "--bisect"
                    },
                    {
                        "name": "--bisect-vars"
                    },
                    {
                        "name": "--bisect-all"
                    },
                    {
                        "name": "--skip",
                        "arguments": [
                            {
                                "name": "number",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Skip <number> commits before starting to show the commit output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--since",
                        "aliases": [
                            "--after"
                        ],
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show commits more recent than <date>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--since-as-filter",
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show all commits more recent than <date>. This visits all commits in the range, rather than stopping at the first commit which is older than <date>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--until",
                        "aliases": [
                            "--before"
                        ],
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show commits older than <date>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--author",
                        "aliases": [
                            "--committer"
                        ],
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit the commits output to ones with author/committer header lines that match the <pattern> regular expression. With more than one --author=<pattern>, commits whose author matches any of the <pattern> are chosen (similarly for multiple --committer=<pattern>).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--grep-reflog",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit the commits output to ones with reflog entries that match the <pattern> regular expression. With more than one --grep-reflog, commits whose reflog message matches any of the given patterns are chosen. It is an error to use this option unless --walk-reflogs is in use.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--grep",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit the commits output to ones with a log message that matches the <pattern> regular expression. With more than one --grep=<pattern>, commits whose message matches any of the <pattern> are chosen (but see --all-match).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--all-match",
                        "description": "Limit the commits output to ones that match all given --grep, instead of ones that match at least one.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--invert-grep",
                        "description": "Limit the commits output to ones with a log message that do not match the <pattern> specified with --grep=<pattern>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--regexp-ignore-case",
                        "aliases": [
                            "-i"
                        ],
                        "description": "Match the regular expression limiting patterns without regard to letter case.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--basic-regexp",
                        "description": "Consider the limiting patterns to be basic regular expressions; this is the default.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--extended-regexp",
                        "aliases": [
                            "-E"
                        ],
                        "description": "Consider the limiting patterns to be extended regular expressions instead of the default basic regular expressions.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--fixed-strings",
                        "aliases": [
                            "-F"
                        ],
                        "description": "Consider the limiting patterns to be fixed strings (don't interpret pattern as a regular expression).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--perl-regexp",
                        "aliases": [
                            "-P"
                        ],
                        "description": "Consider the limiting patterns to be Perl-compatible regular expressions.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--merges",
                        "description": "Print only merge commits. This is exactly the same as --min-parents=2.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--first-parent",
                        "description": "When finding commits to include, follow only the first parent commit upon seeing a merge commit. This option can give a better overview when viewing the evolution of a particular topic branch, because merges into a topic branch tend to be only about adjusting to updated upstream from time to time, and this option allows you to ignore the individual commits brought in to your history by such a merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude-first-parent-only",
                        "description": "When finding commits to exclude (with a ^), follow only the first parent commit upon seeing a merge commit. This can be used to find the set of changes in a topic branch from the point where it diverged from the remote branch, given that arbitrary merges can be valid topic branch changes.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--not",
                        "description": "Reverses the meaning of the ^ prefix (or lack thereof) for all following revision specifiers, up to the next --not. When used on the command line before --stdin, the revisions passed through stdin will not be affected by it. Conversely, when passed via standard input, the revisions passed on the command line will not be affected by it.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--glob",
                        "arguments": [
                            {
                                "name": "glob-pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretend as if all the refs matching shell glob <glob-pattern> are listed on the command line as <commit>. Leading refs/, is automatically prepended if missing. If pattern lacks ?, *, or [, /* at the end is implied.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude",
                        "arguments": [
                            {
                                "name": "glob-pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Do not include refs matching <glob-pattern> that the next --all, --branches, --tags, --remotes, or --glob would otherwise consider. Repetitions of this option accumulate exclusion patterns up to the next --all, --branches, --tags, --remotes, or --glob option (other options or arguments do not clear accumulated patterns).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--reflog",
                        "description": "Pretend as if all objects mentioned by reflogs are listed on the command line as <commit>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--alternate-refs",
                        "description": "Pretend as if all objects mentioned as ref tips of alternate repositories were listed on the command line. An alternate repository is any repository whose object directory is specified in objects/info/alternates. The set of included objects may be modified by core.alternateRefsCommand, etc. See git-config(1).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--single-worktree",
                        "description": "By default, all working trees will be examined by the following options when there are more than one (see git-worktree(1)): --all, --reflog and --indexed-objects. This option forces them to examine the current working tree only.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ignore-missing",
                        "description": "Upon seeing an invalid object name in the input, pretend as if the bad input was not given.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cherry-mark",
                        "description": "Like --cherry-pick (see below) but mark equivalent commits with = rather than omitting them, and inequivalent ones with +.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cherry-pick",
                        "description": "Omit any commit that introduces the same change as another commit on the \"other side\" when the set of commits are limited with symmetric difference.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--left-only",
                        "aliases": [
                            "--right-only"
                        ],
                        "description": "List only commits on the respective side of a symmetric difference, i.e. only those which would be marked < resp. > by --left-right.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--cherry",
                        "description": "A synonym for --right-only --cherry-mark --no-merges; useful to limit the output to the commits on our side and mark those that have been applied to the other side of a forked history with git log --cherry upstream...mybranch, similar to git cherry upstream mybranch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--walk-reflogs",
                        "aliases": [
                            "-g"
                        ],
                        "description": "Instead of walking the commit ancestry chain, walk reflog entries from the most recent one to older ones. When this option is used you cannot specify commits to exclude (that is, ^<commit>, <commit1>..<commit2>, and <commit1>...<commit2> notations cannot be used).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--merge",
                        "description": "Show commits touching conflicted paths in the range HEAD...<other>, where <other> is the first existing pseudoref in MERGE_HEAD, CHERRY_PICK_HEAD, REVERT_HEAD or REBASE_HEAD. Only works when the index has unmerged entries. This option can be used to show relevant commits when resolving conflicts from a 3-way merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--boundary",
                        "description": "Output excluded boundary commits. Boundary commits are prefixed with -.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--use-bitmap-index",
                        "description": "Try to speed up the traversal using the pack bitmap index (if one is available). Note that when traversing with --objects, trees and blobs will not have their associated path printed.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--progress",
                        "arguments": [
                            {
                                "name": "header",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show progress reports on stderr as objects are considered. The <header> text will be printed with each progress update.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--simplify-by-decoration",
                        "description": "Commits that are referred by some branch or tag are selected.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-pulls",
                        "description": "Include all commits from the default mode, but also any merge commits that are not TREESAME to the first parent but are TREESAME to a later parent. This mode is helpful for showing the merge commits that \"first introduced\" a change to a branch.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--full-history",
                        "description": "Same as the default mode, but does not prune some history.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--dense",
                        "description": "Only the selected commits are shown, plus some to have a meaningful history.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--simplify-merges",
                        "description": "Additional option to --full-history to remove some needless merges from the resulting history, as there are no selected commits contributing to this merge.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--ancestry-path",
                        "arguments": [
                            {
                                "name": "commit",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When given a range of commits to display (e.g. <commit1>..<commit2> or <commit2> ^<commit1>), and a commit <commit> in that range, only display commits in that range that are ancestors of <commit>, descendants of <commit>, or <commit> itself. If no commit is specified, use <commit1> (the excluded part of the range) as <commit>. Can be passed multiple times; if so, a commit is included if it is any of the commits given or if it is an ancestor or descendant of one of them.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--author-date-order",
                        "description": "Show no parents before all of its children are shown, but otherwise show commits in the author timestamp order.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--in-commit-order",
                        "description": "Print tree and blob ids in order of the commits. The tree and blob ids are printed after they are first referenced by a commit.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--objects-edge",
                        "description": "Similar to --objects, but also print the IDs of excluded commits prefixed with a \"-\" character. This is used by git-pack-objects(1) to build a \"thin\" pack, which records objects in deltified form based on objects contained in these excluded commits to reduce network traffic.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--objects-edge-aggressive",
                        "description": "Similar to --objects-edge, but it tries harder to find excluded commits at the cost of increased time. This is used instead of --objects-edge to build \"thin\" packs for shallow repositories.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--indexed-objects",
                        "description": "Pretend as if all trees and blobs used by the index are listed on the command line. Note that you probably want to use --objects, too.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--filter",
                        "arguments": [
                            {
                                "name": "filter-spec",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Only useful with one of the --objects*; omits objects (usually blobs) from the list of printed objects. The <filter-spec> may be one of the following:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--filter-provided-objects",
                        "description": "Filter the list of explicitly provided objects, which would otherwise always be printed even if they did not match any of the filters. Only useful with --filter=.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--filter-print-omitted",
                        "description": "Only useful with --filter=; prints a list of the objects omitted by the filter. Object IDs are prefixed with a \"~\" character.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--missing",
                        "arguments": [
                            {
                                "name": "missing-action",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "A debug option to help with future \"partial clone\" development. This option specifies how missing objects are handled.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude-promisor-objects",
                        "description": "(For internal use only.) Prefilter object traversal at promisor boundary. This is used with partial clone. This is stronger than --missing=allow-promisor because it limits the traversal, rather than just silencing errors about missing objects.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-walk",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "sorted",
                                    "unsorted"
                                ]
                            }
                        ],
                        "description": "Only show the given commits, but do not traverse their ancestors. This has no effect if a range is specified. If the argument unsorted is given, the commits are shown in the order they were given on the command line. Otherwise (if sorted or no argument was given), the commits are shown in reverse chronological order by commit time. Cannot be combined with --graph.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--do-walk",
                        "description": "Overrides a previous --no-walk.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pretty",
                        "aliases": [
                            "--format"
                        ],
                        "arguments": [
                            {
                                "name": "format",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Pretty-print the contents of the commit logs in a given format, where <format> can be one of oneline, short, medium, full, fuller, reference, email, raw, format:<string> and tformat:<string>. When <format> is none of the above, and has %<placeholder> in it, it acts as if --pretty=tformat:<format> were given.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--oneline",
                        "description": "This is a shorthand for --pretty=oneline --abbrev-commit used together.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--encoding",
                        "arguments": [
                            {
                                "name": "encoding",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Commit objects record the character encoding used for the log message in their encoding header; this option can be used to tell the command to re-code the commit log message in the encoding preferred by the user. For non plumbing commands this defaults to UTF-8. Note that if an object claims to be encoded in X and we are outputting in X, we will output the object verbatim; this means that invalid sequences in the original commit may be copied to the output. Likewise, if iconv(3) fails to convert the commit, we will quietly output the original object verbatim.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--expand-tabs",
                        "aliases": [
                            "--no-expand-tabs"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Perform a tab expansion (replace each tab with enough spaces to fill to the next display column that is a multiple of <n>) in the log message before showing it in the output. --expand-tabs is a short-hand for --expand-tabs=8, and --no-expand-tabs is a short-hand for --expand-tabs=0, which disables tab expansion.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-signature",
                        "description": "Check the validity of a signed commit object by passing the signature to gpg --verify and show the output.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--relative-date",
                        "description": "Synonym for --date=relative.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--date",
                        "arguments": [
                            {
                                "name": "format",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Only takes effect for dates shown in human-readable format, such as when using --pretty. log.date config variable sets a default value for the log command's --date option. By default, dates are shown in the original time zone (either committer's or author's). If -local is appended to the format (e.g., iso-local), the user's local time zone is used instead.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-commit-header",
                        "description": "Suppress the header line containing \"commit\" and the object ID printed before the specified format. This has no effect on the built-in formats; only custom formats are affected.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--commit-header",
                        "description": "Overrides a previous --no-commit-header.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--timestamp",
                        "description": "Print the raw commit timestamp.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--graph",
                        "description": "Draw a text-based graphical representation of the commit history on the left hand side of the output. This may cause extra lines to be printed in between commits, in order for the graph history to be drawn properly. Cannot be combined with --no-walk.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-linear-break",
                        "arguments": [
                            {
                                "name": "barrier",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "When --graph is not used, all history branches are flattened which can make it hard to see that the two consecutive commits do not belong to a linear branch. This option puts a barrier in between them in that case. If <barrier> is specified, it is the string that will be shown instead of the default one.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git rev-list [<options>] <commit>... [--] [<path>...]"
                        ]
                    }
                ]
            },
            {
                "name": "rev-parse",
                "description": "Pick out and massage parameters",
                "arguments": [
                    {
                        "name": "arg",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--parseopt",
                        "description": "Use git rev-parse in option parsing mode (see PARSEOPT section below). The command in this mode can be used outside a repository or a working tree controlled by a repository.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--sq-quote",
                        "description": "Use git rev-parse in shell quoting mode (see SQ-QUOTE section below). In contrast to the --sq option below, this mode only does quoting. Nothing else is done to command input. The command in this mode can be used outside a repository or a working tree controlled by a repository.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--keep-dashdash",
                        "description": "Only meaningful in --parseopt mode. Tells the option parser to echo out the first -- met instead of skipping it.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stop-at-non-option",
                        "description": "Only meaningful in --parseopt mode. Lets the option parser stop at the first non-option argument. This can be used to parse sub-commands that take options themselves.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stuck-long",
                        "description": "Only meaningful in --parseopt mode. Output the options in their long form if available, and with their arguments stuck.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--revs-only",
                        "description": "Do not output flags and parameters not meant for git rev-list command.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-revs",
                        "description": "Do not output flags and parameters meant for git rev-list command.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--flags",
                        "description": "Do not output non-flag parameters.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--default",
                        "arguments": [
                            {
                                "name": "arg",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "If there is no parameter given by the user, use <arg> instead.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--prefix",
                        "arguments": [
                            {
                                "name": "arg",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Behave as if git rev-parse was invoked from the <arg> subdirectory of the working tree. Any relative filenames are resolved as if they are prefixed by <arg> and will be printed in that form.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--verify",
                        "description": "Verify that exactly one parameter is provided, and that it can be turned into a raw 20-byte SHA-1 that can be used to access the object database. If so, emit it to the standard output; otherwise, error out.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "Only meaningful in --verify mode. Do not output an error message if the first argument is not a valid object name; instead exit with non-zero status silently. SHA-1s for valid object names are printed to stdout on success.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--sq",
                        "description": "Usually the output is made one line per flag and parameter. This option makes output a single line, properly quoted for consumption by shell. Useful when you expect your parameter to contain whitespaces and newlines (e.g. when using pickaxe -S with git diff-*). In contrast to the --sq-quote option, the command input is still interpreted as usual.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--short",
                        "arguments": [
                            {
                                "name": "length",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Same as --verify but shortens the object name to a unique prefix with at least length characters. The minimum length is 4, the default is the effective value of the core.abbrev configuration variable (see git-config(1)).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--not",
                        "description": "When showing object names, prefix them with ^ and strip ^ prefix from the object names that already have one.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--abbrev-ref",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "strict",
                                    "loose"
                                ]
                            }
                        ],
                        "description": "A non-ambiguous short name of the objects name. The option core.warnAmbiguousRefs is used to select the strict abbreviation mode.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--symbolic",
                        "description": "Usually the object names are output in SHA-1 form (with possible ^ prefix); this option makes them output in a form as close to the original input as possible.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--symbolic-full-name",
                        "description": "This is similar to --symbolic, but it omits input that are not refs (i.e. branch or tag names; or more explicitly disambiguating \"heads/master\" form, when you want to name the \"master\" branch when there is an unfortunately named tag \"master\"), and shows them as full refnames (e.g. \"refs/heads/master\").",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--output-object-format",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "sha1",
                                    "sha256",
                                    "storage"
                                ]
                            }
                        ],
                        "description": "Allow oids to be input from any object format that the current repository supports.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--all",
                        "description": "Show all refs found in refs/.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--branches",
                        "aliases": [
                            "--tags",
                            "--remotes"
                        ],
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show all branches, tags, or remote-tracking branches, respectively (i.e., refs found in refs/heads, refs/tags, or refs/remotes, respectively).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--glob",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show all refs matching the shell glob pattern pattern. If the pattern does not start with refs/, this is automatically prepended. If the pattern does not contain a globbing character (?, *, or [), it is turned into a prefix match by appending /*.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude",
                        "arguments": [
                            {
                                "name": "glob-pattern",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Do not include refs matching <glob-pattern> that the next --all, --branches, --tags, --remotes, or --glob would otherwise consider. Repetitions of this option accumulate exclusion patterns up to the next --all, --branches, --tags, --remotes, or --glob option (other options or arguments do not clear accumulated patterns).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exclude-hidden",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "fetch",
                                    "receive",
                                    "uploadpack"
                                ]
                            }
                        ],
                        "description": "Do not include refs that would be hidden by git-fetch, git-receive-pack or git-upload-pack by consulting the appropriate fetch.hideRefs, receive.hideRefs or uploadpack.hideRefs configuration along with transfer.hideRefs (see git-config(1)). This option affects the next pseudo-ref option --all or --glob and is cleared after processing them.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--disambiguate",
                        "arguments": [
                            {
                                "name": "prefix",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Show every object whose name begins with the given prefix. The <prefix> must be at least 4 hexadecimal digits long to avoid listing each and every object in the repository by mistake.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--local-env-vars",
                        "description": "List the GIT_* environment variables that are local to the repository (e.g. GIT_DIR or GIT_WORK_TREE, but not GIT_EDITOR). Only the names of the variables are listed, not their value, even if they are set.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--path-format",
                        "arguments": [
                            {
                                "name": "value",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "absolute",
                                    "relative"
                                ]
                            }
                        ],
                        "description": "Controls the behavior of certain other options. If specified as absolute, the paths printed by those options will be absolute and canonical. If specified as relative, the paths will be relative to the current working directory if that is possible. The default is option specific.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--git-dir",
                        "description": "Show $GIT_DIR if defined. Otherwise show the path to the .git directory. The path shown, when relative, is relative to the current working directory.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--git-common-dir",
                        "description": "Show $GIT_COMMON_DIR if defined, else $GIT_DIR.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--resolve-git-dir",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Check if <path> is a valid repository or a gitfile that points at a valid repository, and print the location of the repository. If <path> is a gitfile then the resolved path to the real repository is printed.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--git-path",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Resolve \"$GIT_DIR/<path>\" and takes other path relocation variables such as $GIT_OBJECT_DIRECTORY, $GIT_INDEX_FILE... into account. For example, if $GIT_OBJECT_DIRECTORY is set to /foo/bar then \"git rev-parse --git-path objects/abc\" returns /foo/bar/abc.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-toplevel",
                        "description": "Show the (by default, absolute) path of the top-level directory of the working tree. If there is no working tree, report an error.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-superproject-working-tree",
                        "description": "Show the absolute path of the root of the superproject's working tree (if exists) that uses the current repository as its submodule. Outputs nothing if the current repository is not used as a submodule by any project.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--shared-index-path",
                        "description": "Show the path to the shared index file in split index mode, or empty if not in split-index mode.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--absolute-git-dir",
                        "description": "Like --git-dir, but its output is always the canonicalized absolute path.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--is-inside-git-dir",
                        "description": "When the current working directory is below the repository directory print \"true\", otherwise \"false\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--is-inside-work-tree",
                        "description": "When the current working directory is inside the work tree of the repository print \"true\", otherwise \"false\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--is-bare-repository",
                        "description": "When the repository is bare print \"true\", otherwise \"false\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--is-shallow-repository",
                        "description": "When the repository is shallow print \"true\", otherwise \"false\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-cdup",
                        "description": "When the command is invoked from a subdirectory, show the path of the top-level directory relative to the current directory (typically a sequence of \"../\", or an empty string).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-prefix",
                        "description": "When the command is invoked from a subdirectory, show the path of the current directory relative to the top-level directory.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-object-format",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "storage",
                                    "input",
                                    "output"
                                ]
                            }
                        ],
                        "description": "Show the object format (hash algorithm) used for the repository for storage inside the .git directory, input, or output. For input, multiple algorithms may be printed, space-separated. If not specified, the default is \"storage\".",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--show-ref-format",
                        "description": "Show the reference storage format used for the repository.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--since",
                        "aliases": [
                            "--after"
                        ],
                        "arguments": [
                            {
                                "name": "datestring",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Parse the date string, and output the corresponding --max-age= parameter for git rev-list.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--until",
                        "aliases": [
                            "--before"
                        ],
                        "arguments": [
                            {
                                "name": "datestring",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Parse the date string, and output the corresponding --min-age= parameter for git rev-list.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git rev-parse --parseopt [<options>] -- [<args>...]",
                            "git rev-parse --sq-quote [<arg>...]",
                            "git rev-parse [<options>] [<arg>...]"
                        ]
                    }
                ]
            },
            {
                "name": "show-index",
                "description": "Show packed archive index",
                "arguments": [
                    {
                        "name": " pack-idx-file",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--object-format",
                        "arguments": [
                            {
                                "name": "hash-algorithm",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "specify the hash algorithm to use"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git show-index [--object-format=<hash-algorithm>] < <pack-idx-file>"
                        ]
                    }
                ]
            },
            {
                "name": "show-ref",
                "description": "List references in a local repository",
                "arguments": [
                    {
                        "name": "pattern",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "ref",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--tags",
                        "description": "only show tags (can be combined with --branches)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--branches",
                        "description": "only show branches (can be combined with --tags)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--exists",
                        "description": "check for reference existence without resolving",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--verify",
                        "description": "stricter reference checking, requires exact ref path",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--head",
                        "description": "show the HEAD reference, even if it would be filtered out",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--dereference",
                        "aliases": [
                            "-d"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "dereference tags into object IDs"
                    },
                    {
                        "name": "--hash",
                        "aliases": [
                            "-s"
                        ],
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "only show SHA1 hash using <n> digits",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--abbrev",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "use <n> digits to display object names",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "do not print results to stdout (useful with --verify)",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--exclude-existing",
                        "arguments": [
                            {
                                "name": "pattern",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "show refs from stdin that aren't in local repository"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git show-ref [--head] [-d | --dereference] [-s | --hash[=<n>]] [--abbrev[=<n>]] [--branches] [--tags] [--] [<pattern>...]",
                            "git show-ref --verify [-q | --quiet] [-d | --dereference] [-s | --hash[=<n>]] [--abbrev[=<n>]] [--] [<ref>...]",
                            "git show-ref --exclude-existing[=<pattern>]",
                            "git show-ref --exists <ref>"
                        ]
                    }
                ]
            },
            {
                "name": "unpack-file",
                "description": "Creates a temporary file with a blob's contents",
                "arguments": [
                    {
                        "name": "blob",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git unpack-file <blob>"
                        ]
                    }
                ]
            },
            {
                "name": "var",
                "description": "Show a Git logical variable",
                "arguments": [
                    {
                        "name": "variable",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-l",
                        "description": "Display the logical variables. In addition, all the variables of the Git configuration file .git/config are listed as well. (However, the configuration variables listing functionality is deprecated in favor of git config -l.)",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git var (-l | <variable>)"
                        ]
                    }
                ]
            },
            {
                "name": "verify-pack",
                "description": "Validate packed Git archive files",
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--stat-only",
                        "aliases": [
                            "-s"
                        ],
                        "description": "show statistics only",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--object-format",
                        "arguments": [
                            {
                                "name": "hash",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "specify the hash algorithm to use"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Interrogators"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git verify-pack [-v | --verbose] [-s | --stat-only] [--] <pack>.idx..."
                        ]
                    }
                ]
            },
            {
                "name": "daemon",
                "description": "A really simple server for Git repositories",
                "arguments": [
                    {
                        "name": "directory",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--strict-paths",
                        "description": "Match paths exactly (i.e. don't allow \"/foo/repo\" when the real path is \"/foo/repo.git\" or \"/foo/repo/.git\") and don't do user-relative paths. git daemon will refuse to start when this option is enabled and no directory arguments are provided.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--base-path",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Remap all the path requests as relative to the given path. This is sort of \"Git root\" - if you run git daemon with --base-path=/srv/git on example.com, then if you later try to pull from git://example.com/hello.git, git daemon will interpret the path as /srv/git/hello.git.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--base-path-relaxed",
                        "description": "If --base-path is enabled and repo lookup fails, with this option git daemon will attempt to lookup without prefixing the base path. This is useful for switching to --base-path usage, while still allowing the old paths.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--interpolated-path",
                        "arguments": [
                            {
                                "name": "pathtemplate",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "To support virtual hosting, an interpolated path template can be used to dynamically construct alternate paths. The template supports %H for the target hostname as supplied by the client but converted to all lowercase, %CH for the canonical hostname, %IP for the server's IP address, %P for the port number, and %D for the absolute path of the named repository. After interpolation, the path is validated against the directory list.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--export-all",
                        "description": "Allow pulling from all directories that look like Git repositories (have the objects and refs subdirectories), even if they do not have the git-daemon-export-ok file.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--inetd",
                        "description": "Have the server run as an inetd service. Implies --syslog (may be overridden with --log-destination=). Incompatible with --detach, --port, --listen, --user and --group options.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--listen",
                        "arguments": [
                            {
                                "name": "host-or-ipaddr",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Listen on a specific IP address or hostname. IP addresses can be either an IPv4 address or an IPv6 address if supported. If IPv6 is not supported, then --listen=<hostname> is also not supported and --listen must be given an IPv4 address. Can be given more than once. Incompatible with --inetd option.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--port",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Listen on an alternative port. Incompatible with --inetd option.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--init-timeout",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Timeout (in seconds) between the moment the connection is established and the client request is received (typically a rather low value, since that should be basically immediate).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--timeout",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Timeout (in seconds) for specific client sub-requests. This includes the time it takes for the server to process the sub-request and the time spent waiting for the next client's request.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--max-connections",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Maximum number of concurrent clients, defaults to 32. Set it to zero for no limit.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--syslog",
                        "description": "Short for --log-destination=syslog.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--log-destination",
                        "arguments": [
                            {
                                "name": "destination",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Send log messages to the specified destination. Note that this option does not imply --verbose, thus by default only error conditions will be logged. The <destination> must be one of:",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--user-path",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Allow ~user notation to be used in requests. When specified with no parameter, a request to git://host/~alice/foo is taken as a request to access foo repository in the home directory of user alice. If --user-path=<path> is specified, the same request is taken as a request to access <path>/foo repository in the home directory of user alice.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--verbose",
                        "description": "Log details about the incoming connections and requested files.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--reuseaddr",
                        "description": "Use SO_REUSEADDR when binding the listening socket. This allows the server to restart without waiting for old connections to time out.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--detach",
                        "description": "Detach from the shell. Implies --syslog.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--pid-file",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Save the process id in <file>. Ignored when the daemon is run under --inetd.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--user",
                        "aliases": [
                            "--group"
                        ],
                        "arguments": [
                            {
                                "name": "user",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Change daemon's uid and gid before entering the service loop. When only --user is given without --group, the primary group ID for the user is used. The values of the option are given to getpwnam(3) and getgrnam(3) and numeric IDs are not supported.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--enable",
                        "aliases": [
                            "--disable"
                        ],
                        "arguments": [
                            {
                                "name": "service",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Enable/disable the service site-wide per default. Note that a service disabled site-wide can still be enabled per repository if it is marked overridable and the repository enables the service with a configuration item.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--allow-override",
                        "aliases": [
                            "--forbid-override"
                        ],
                        "arguments": [
                            {
                                "name": "service",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Allow/forbid overriding the site-wide default with per repository configuration. By default, all the services may be overridden.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--informative-errors",
                        "aliases": [
                            "--no-informative-errors"
                        ],
                        "description": "When informative errors are turned on, git-daemon will report more verbose errors to the client, differentiating conditions like \"no such repository\" from \"repository not exported\". This is more convenient for clients, but may leak information about the existence of unexported repositories. When informative errors are not enabled, all errors report \"access denied\" to the client. The default is --no-informative-errors.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--access-hook",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Every time a client connects, first run an external command specified by the <path> with service name (e.g. \"upload-pack\"), path to the repository, hostname (%H), canonical hostname (%CH), IP address (%IP), and TCP port (%P) as its command-line arguments. The external command can decide to decline the service by exiting with a non-zero status (or to allow it by exiting with a zero status). It can also look at the $REMOTE_ADDR and $REMOTE_PORT environment variables to learn about the requestor when making this decision.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Syncing Repositories"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git daemon [--verbose] [--syslog] [--export-all] [--timeout=<n>] [--init-timeout=<n>] [--max-connections=<n>] [--strict-paths] [--base-path=<path>] [--base-path-relaxed] [--user-path | --user-path=<path>] [--interpolated-path=<path>] [--reuseaddr] [--pid-file=<file>] [--(enable|disable|allow-override|forbid-override)=<service>] [--access-hook=<path>] [--inetd | [--listen=<host_or_ipaddr>] [--port=<n>] [--detach] [--user=<user> [--group=<group>]] [--log-destination=(stderr|syslog|none)] [<directory>...]"
                        ]
                    }
                ]
            },
            {
                "name": "fetch-pack",
                "description": "Receive missing objects from another repository",
                "arguments": [
                    {
                        "name": "directory",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "refs",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--all",
                        "description": "Fetch all remote refs.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--stdin",
                        "description": "Take the list of refs from stdin, one per line. If there are refs specified on the command line in addition to this option, then the refs from stdin are processed after those on the command line.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "Pass -q flag to git unpack-objects; this makes the cloning process less verbose.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--keep",
                        "aliases": [
                            "-k"
                        ],
                        "description": "Do not invoke git unpack-objects on received data, but create a single packfile out of it instead, and store it in the object database. If provided twice then the pack is locked against repacking.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--thin",
                        "description": "Fetch a \"thin\" pack, which records objects in deltified form based on objects not included in the pack to reduce network traffic.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--include-tag",
                        "description": "If the remote side supports it, annotated tags objects will be downloaded on the same connection as the other objects if the object the tag references is downloaded. The caller must otherwise determine the tags this option made available.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--upload-pack",
                        "arguments": [
                            {
                                "name": "git-upload-pack",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Use this to specify the path to git-upload-pack on the remote side, if it is not found on your $PATH. Installations of sshd ignores the user's environment setup scripts for login shells (e.g. .bash_profile) and your privately installed git may not be found on the system default $PATH. Another workaround suggested is to set up your $PATH in \".bashrc\", but this flag is for people who do not want to pay the overhead for non-interactive shells by having a lean .bashrc file (they set most of the things up in .bash_profile).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--exec",
                        "arguments": [
                            {
                                "name": "git-upload-pack",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Same as --upload-pack=<git-upload-pack>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--depth",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Limit fetching to ancestor-chains not longer than n. git-upload-pack treats the special depth 2147483647 as infinite even if there is an ancestor-chain that long.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--shallow-since",
                        "arguments": [
                            {
                                "name": "date",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Deepen or shorten the history of a shallow repository to include all reachable commits after <date>.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--shallow-exclude",
                        "arguments": [
                            {
                                "name": "ref",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Deepen or shorten the history of a shallow repository to exclude commits reachable from a specified remote branch or tag. This option can be specified multiple times.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--deepen-relative",
                        "description": "Argument --depth specifies the number of commits from the current shallow boundary instead of from the tip of each remote branch history.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--refetch",
                        "description": "Skips negotiating commits with the server in order to fetch all matching objects. Use to reapply a new partial clone blob/tree filter.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--no-progress",
                        "description": "Do not show the progress.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--check-self-contained-and-connected",
                        "description": "Output \"connectivity-ok\" if the received pack is self-contained and connected.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-v",
                        "description": "Run verbosely.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Syncing Repositories"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git fetch-pack [--all] [--stdin] [--quiet | -q] [--keep | -k] [--thin] [--include-tag] [--upload-pack=<git-upload-pack>] [--depth=<n>] [--no-progress] [--diag-url] [-v] [<host>:]<directory> [<refs>...]"
                        ]
                    }
                ]
            },
            {
                "name": "http-backend",
                "description": "Server side implementation of Git over HTTP",
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Syncing Repositories"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git http-backend"
                        ]
                    }
                ]
            },
            {
                "name": "send-pack",
                "description": "Push objects over Git protocol to another repository",
                "arguments": [
                    {
                        "name": "directory",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "ref",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be more verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "be more quiet",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--receive-pack",
                        "arguments": [
                            {
                                "name": "receive-pack",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "receive pack program"
                    },
                    {
                        "name": "--exec",
                        "arguments": [
                            {
                                "name": "receive-pack",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "receive pack program"
                    },
                    {
                        "name": "--remote",
                        "arguments": [
                            {
                                "name": "remote",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "remote name"
                    },
                    {
                        "name": "--all",
                        "description": "push all refs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--dry-run",
                        "aliases": [
                            "-n"
                        ],
                        "description": "dry run",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--mirror",
                        "description": "mirror all refs",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "description": "force updates",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--signed",
                        "arguments": [
                            {
                                "name": "value",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                },
                                "acceptedValues": [
                                    "yes",
                                    "no",
                                    "if-asked"
                                ]
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "GPG sign the push"
                    },
                    {
                        "name": "--push-option",
                        "arguments": [
                            {
                                "name": "server-specific",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "option to transmit"
                    },
                    {
                        "name": "--progress",
                        "description": "force progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--thin",
                        "description": "use thin pack",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--atomic",
                        "description": "request atomic transaction on remote side",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--stateless-rpc",
                        "description": "use stateless RPC protocol",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--stdin",
                        "description": "read refs from stdin",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--helper-status",
                        "description": "print status from remote helper",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--force-with-lease",
                        "arguments": [
                            {
                                "name": "refname:expect",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "require old value of ref to be at this value"
                    },
                    {
                        "name": "--force-if-includes",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "require remote updates to be integrated locally"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Syncing Repositories"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git send-pack [--mirror] [--dry-run] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [--atomic] [--[no-]signed | --signed=(true|false|if-asked)] [<host>:]<directory> (--all | <ref>...)"
                        ]
                    }
                ]
            },
            {
                "name": "update-server-info",
                "description": "Update auxiliary info file to help dumb servers",
                "options": [
                    {
                        "name": "--force",
                        "aliases": [
                            "-f"
                        ],
                        "description": "update the info files from scratch",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Syncing Repositories"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git update-server-info [-f | --force]"
                        ]
                    }
                ]
            },
            {
                "name": "check-attr",
                "description": "Display gitattributes information",
                "arguments": [
                    {
                        "name": "attr",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "pathname",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--all",
                        "aliases": [
                            "-a"
                        ],
                        "description": "report all attributes set on file",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--cached",
                        "description": "use .gitattributes only from the index",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--stdin",
                        "description": "read file names from stdin",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-z",
                        "description": "terminate input and output records by a NUL character"
                    },
                    {
                        "name": "--source",
                        "arguments": [
                            {
                                "name": "tree-ish",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "which tree-ish to check attributes at"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>...",
                            "git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]"
                        ]
                    }
                ]
            },
            {
                "name": "check-ignore",
                "description": "Debug gitignore / exclude files",
                "arguments": [
                    {
                        "name": "pathname",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--quiet",
                        "aliases": [
                            "-q"
                        ],
                        "description": "suppress progress reporting",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--verbose",
                        "aliases": [
                            "-v"
                        ],
                        "description": "be verbose",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--stdin",
                        "description": "read file names from stdin",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-z",
                        "description": "terminate input and output records by a NUL character"
                    },
                    {
                        "name": "--non-matching",
                        "aliases": [
                            "-n"
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "show non-matching input paths"
                    },
                    {
                        "name": "--no-index",
                        "description": "ignore index when checking"
                    },
                    {
                        "name": "--index",
                        "description": "opposite of --no-index"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git check-ignore [<options>] <pathname>...",
                            "git check-ignore [<options>] --stdin"
                        ]
                    }
                ]
            },
            {
                "name": "check-mailmap",
                "description": "Show canonical names and email addresses of contacts",
                "arguments": [
                    {
                        "name": "contact",
                        "required": true,
                        "arity": {
                            "minimum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--stdin",
                        "description": "also read contacts from stdin",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--mailmap-file",
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "read additional mailmap entries from file"
                    },
                    {
                        "name": "--mailmap-blob",
                        "arguments": [
                            {
                                "name": "blob",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "read additional mailmap entries from blob"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git check-mailmap [<options>] <contact>..."
                        ]
                    }
                ]
            },
            {
                "name": "check-ref-format",
                "description": "Ensures that a reference name is well formed",
                "arguments": [
                    {
                        "name": "refname",
                        "required": false,
                        "arity": {
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--allow-onelevel",
                        "description": "Controls whether one-level refnames are accepted (i.e., refnames that do not contain multiple /-separated components). The default is --no-allow-onelevel.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--refspec-pattern",
                        "description": "Interpret <refname> as a reference name pattern for a refspec (as used with remote repositories). If this option is enabled, <refname> is allowed to contain a single * in the refspec (e.g., foo/bar*/baz or foo/bar*baz/ but not foo/bar*/baz*).",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--normalize",
                        "description": "Normalize refname by removing any leading slash (/) characters and collapsing runs of adjacent slashes between name components into a single slash. If the normalized refname is valid then print it to standard output and exit with a status of 0, otherwise exit with a non-zero status. (--print is a deprecated way to spell --normalize.)",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git check-ref-format [--normalize] [<options>] <refname>",
                            "git check-ref-format --branch <branchname-shorthand>"
                        ]
                    }
                ]
            },
            {
                "name": "column",
                "description": "Display data in columns",
                "options": [
                    {
                        "name": "--command",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "lookup config vars",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--mode",
                        "arguments": [
                            {
                                "name": "style",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "layout to use",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--raw-mode",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "layout to use"
                    },
                    {
                        "name": "--width",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "maximum width",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--indent",
                        "arguments": [
                            {
                                "name": "string",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "padding space on left border"
                    },
                    {
                        "name": "--nl",
                        "arguments": [
                            {
                                "name": "string",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "padding space on right border",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--padding",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "padding space between columns",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git column [<options>]"
                        ]
                    }
                ]
            },
            {
                "name": "credential",
                "description": "Retrieve and store user credentials",
                "commands": [
                    {
                        "name": "fill",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git credential (fill|approve|reject)"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "approve",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git credential (fill|approve|reject)"
                                ]
                            }
                        ]
                    },
                    {
                        "name": "reject",
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git credential (fill|approve|reject)"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git credential (fill|approve|reject)"
                        ]
                    }
                ]
            },
            {
                "name": "credential-cache",
                "description": "Helper to temporarily store passwords in memory",
                "arguments": [
                    {
                        "name": "action",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--timeout",
                        "arguments": [
                            {
                                "name": "n",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "number of seconds to cache credentials",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--socket",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "path of cache-daemon socket",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git credential-cache [<options>] <action>"
                        ]
                    }
                ]
            },
            {
                "name": "credential-store",
                "description": "Helper to store credentials on disk",
                "arguments": [
                    {
                        "name": "action",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--file",
                        "arguments": [
                            {
                                "name": "path",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "fetch and store credentials in <path>",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git credential-store [<options>] <action>"
                        ]
                    }
                ]
            },
            {
                "name": "fmt-merge-msg",
                "description": "Produce a merge commit message",
                "options": [
                    {
                        "name": "--log",
                        "arguments": [
                            {
                                "name": "n",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "populate log with at most <n> entries from shortlog",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--message",
                        "aliases": [
                            "-m"
                        ],
                        "arguments": [
                            {
                                "name": "text",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use <text> as start of message"
                    },
                    {
                        "name": "--into-name",
                        "arguments": [
                            {
                                "name": "name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "use <name> instead of the real target branch"
                    },
                    {
                        "name": "--file",
                        "aliases": [
                            "-F"
                        ],
                        "arguments": [
                            {
                                "name": "file",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "file to read from"
                    },
                    {
                        "name": "--summary",
                        "description": "Synonyms to --log and --no-log; these are deprecated and will be removed in the future.",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            },
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]"
                        ]
                    }
                ]
            },
            {
                "name": "hook",
                "description": "Run git hooks",
                "commands": [
                    {
                        "name": "run",
                        "description": "Run the <hook-name> hook. See githooks(5) for supported hook names.",
                        "arguments": [
                            {
                                "name": "hook-name",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            },
                            {
                                "name": "hook-args",
                                "required": false,
                                "arity": {
                                    "minimum": 0,
                                    "maximum": 1
                                }
                            }
                        ],
                        "options": [
                            {
                                "name": "--ignore-missing",
                                "description": "silently ignore missing requested <hook-name>",
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ]
                            },
                            {
                                "name": "--to-stdin",
                                "arguments": [
                                    {
                                        "name": "path",
                                        "required": true,
                                        "arity": {
                                            "minimum": 1,
                                            "maximum": 1
                                        }
                                    }
                                ],
                                "metadata": [
                                    {
                                        "name": "x-negatable",
                                        "value": true
                                    }
                                ],
                                "description": "file to read into hooks' stdin"
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-usage",
                                "value": [
                                    "git hook run [--ignore-missing] [--to-stdin=<path>] <hook-name> [-- <hook-args>]"
                                ]
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git hook run [--ignore-missing] [--to-stdin=<path>] <hook-name> [-- <hook-args>]"
                        ]
                    }
                ]
            },
            {
                "name": "interpret-trailers",
                "description": "Add or parse structured information in commit messages",
                "arguments": [
                    {
                        "name": "file",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "--in-place",
                        "description": "edit files in place",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--trim-empty",
                        "description": "trim empty trailers",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--where",
                        "arguments": [
                            {
                                "name": "placement",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "where to place the new trailer"
                    },
                    {
                        "name": "--if-exists",
                        "arguments": [
                            {
                                "name": "action",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "action if trailer already exists"
                    },
                    {
                        "name": "--if-missing",
                        "arguments": [
                            {
                                "name": "action",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "action if trailer is missing"
                    },
                    {
                        "name": "--only-trailers",
                        "description": "output only the trailers",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--only-input",
                        "description": "do not apply trailer.* configuration variables",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--unfold",
                        "description": "reformat multiline trailer values as single-line values",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--parse",
                        "description": "alias for --only-trailers --only-input --unfold"
                    },
                    {
                        "name": "--no-divider",
                        "description": "do not treat \"---\" as the end of input"
                    },
                    {
                        "name": "--divider",
                        "description": "opposite of --no-divider"
                    },
                    {
                        "name": "--trailer",
                        "arguments": [
                            {
                                "name": "trailer",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ],
                        "description": "trailer(s) to add"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git interpret-trailers [--in-place] [--trim-empty] [(--trailer (<key>|<key-alias>)[(=|:)<value>])...] [--parse] [<file>...]"
                        ]
                    }
                ]
            },
            {
                "name": "mailinfo",
                "description": "Extracts patch and authorship from a single e-mail message",
                "arguments": [
                    {
                        "name": "msg",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "patch",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-k",
                        "description": "keep subject"
                    },
                    {
                        "name": "-b",
                        "description": "keep non patch brackets in subject"
                    },
                    {
                        "name": "--message-id",
                        "aliases": [
                            "-m"
                        ],
                        "description": "copy Message-ID to the end of commit message",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "-u",
                        "description": "re-code metadata to i18n.commitEncoding"
                    },
                    {
                        "name": "-n",
                        "description": "disable charset re-coding of metadata"
                    },
                    {
                        "name": "--encoding",
                        "arguments": [
                            {
                                "name": "encoding",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "re-code metadata to this encoding"
                    },
                    {
                        "name": "--scissors",
                        "description": "use scissors",
                        "metadata": [
                            {
                                "name": "x-negatable",
                                "value": true
                            }
                        ]
                    },
                    {
                        "name": "--quoted-cr",
                        "arguments": [
                            {
                                "name": "action",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "action when quoted CR is found"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git mailinfo [<options>] <msg> <patch> < mail >info"
                        ]
                    }
                ]
            },
            {
                "name": "mailsplit",
                "description": "Simple UNIX mbox splitter program",
                "arguments": [
                    {
                        "name": "mbox",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    },
                    {
                        "name": "Maildir",
                        "required": false,
                        "arity": {
                            "minimum": 0
                        }
                    }
                ],
                "options": [
                    {
                        "name": "-o",
                        "arguments": [
                            {
                                "name": "directory",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Directory in which to place the individual messages.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-b",
                        "description": "If any file doesn't begin with a From line, assume it is a single mail message instead of signaling an error.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-d",
                        "arguments": [
                            {
                                "name": "prec",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Instead of the default 4 digits with leading zeros, different precision can be specified for the generated filenames.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "-f",
                        "arguments": [
                            {
                                "name": "nn",
                                "required": true,
                                "arity": {
                                    "minimum": 1,
                                    "maximum": 1
                                }
                            }
                        ],
                        "description": "Skip the first <nn> numbers, for example if -f3 is specified, start the numbering with 0004.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--keep-cr",
                        "description": "Do not remove \\r from lines ending with \\r\\n.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    },
                    {
                        "name": "--mboxrd",
                        "description": "Input is of the \"mboxrd\" format and \"^>+From \" line escaping is reversed.",
                        "metadata": [
                            {
                                "name": "x-source",
                                "value": "man"
                            }
                        ]
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git mailsplit [-d<prec>] [-f<n>] [-b] [--keep-cr] -o<directory> [(<mbox>|<Maildir>)...]"
                        ]
                    }
                ]
            },
            {
                "name": "merge-one-file",
                "description": "The standard helper program to use with git-merge-index",
                "arguments": [
                    {
                        "name": "orig blob",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "our blob",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "their blob",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "path",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "orig mode",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "our mode",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    },
                    {
                        "name": "their mode",
                        "required": true,
                        "arity": {
                            "minimum": 1,
                            "maximum": 1
                        }
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git merge-one-file <orig blob> <our blob> <their blob> <path> <orig mode> <our mode> <their mode>"
                        ]
                    }
                ]
            },
            {
                "name": "patch-id",
                "description": "Compute unique ID for a patch",
                "options": [
                    {
                        "name": "--unstable",
                        "description": "use the unstable patch-id algorithm"
                    },
                    {
                        "name": "--stable",
                        "description": "use the stable patch-id algorithm"
                    },
                    {
                        "name": "--verbatim",
                        "description": "don't strip whitespace from the patch"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git patch-id [--stable | --unstable | --verbatim]"
                        ]
                    }
                ]
            },
            {
                "name": "stripspace",
                "description": "Remove unnecessary whitespace",
                "options": [
                    {
                        "name": "--strip-comments",
                        "aliases": [
                            "-s"
                        ],
                        "description": "skip and remove all lines starting with comment character"
                    },
                    {
                        "name": "--comment-lines",
                        "aliases": [
                            "-c"
                        ],
                        "description": "prepend comment character and space to each line"
                    }
                ],
                "metadata": [
                    {
                        "name": "x-category",
                        "value": "Low-level Commands / Internal Helpers"
                    },
                    {
                        "name": "x-usage",
                        "value": [
                            "git stripspace [-s | --strip-comments]",
                            "git stripspace [-c | --comment-lines]"
                        ]
                    }
                ]
            }
        ],
        "exitCodes": [
            {
                "code": 0,
                "description": "Success."
            },
            {
                "code": 1,
                "description": "Generic failure, such as an unknown command or a command reporting a negative result."
            },
            {
                "code": 128,
                "description": "Fatal error (reported with a 'fatal:' message), such as a missing repository."
            },
            {
                "code": 129,
                "description": "Usage error: an unknown option or invalid arguments. Also returned by -h."
            }
        ],
        "examples": [
            "git init",
            "git clone https://github.com/git/git.git",
            "git add --all",
            "git commit -m \"Initial commit\"",
            "git log --oneline --graph -n 10",
            "git remote add origin https://example.com/repo.git",
            "git stash push -m \"work in progress\""
        ],
        "metadata": [
            {
                "name": "x-documentation",
                "value": "https://git-scm.com/docs"
            },
            {
                "name": "x-usage",
                "value": "git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--no-lazy-fetch] [--no-optional-locks] [--no-advice] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] [--config-env=<name>=<envvar>] <command> [<args>]"
            }
        ]
    },
    "info": {
        "title": "git",
        "summary": "The stupid content tracker",
        "description": "Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals.",
        "version": "2.50.1",
        "contact": {
            "name": "Git",
            "url": "https://git-scm.com"
        },
        "license": {
            "name": "GNU General Public License v2.0 only",
            "identifier": "GPL-2.0-only"
        }
    },
    "conventions": {
        "groupOptions": true,
        "optionSeparator": " "
    }
}
