1Git is an example of several common subcommand patterns. 2 3Help: 4```console 5$ git 6? failed 7git 8A fictional versioning CLI 9 10USAGE: 11 git[EXE] <SUBCOMMAND> 12 13OPTIONS: 14 -h, --help Print help information 15 16SUBCOMMANDS: 17 add adds things 18 clone Clones repos 19 help Print this message or the help of the given subcommand(s) 20 push pushes things 21 stash 22 23$ git help 24git 25A fictional versioning CLI 26 27USAGE: 28 git[EXE] <SUBCOMMAND> 29 30OPTIONS: 31 -h, --help Print help information 32 33SUBCOMMANDS: 34 add adds things 35 clone Clones repos 36 help Print this message or the help of the given subcommand(s) 37 push pushes things 38 stash 39 40$ git help add 41git[EXE]-add 42adds things 43 44USAGE: 45 git[EXE] add <PATH>... 46 47ARGS: 48 <PATH>... Stuff to add 49 50OPTIONS: 51 -h, --help Print help information 52 53``` 54 55A basic argument: 56```console 57$ git add 58? failed 59git[EXE]-add 60adds things 61 62USAGE: 63 git[EXE] add <PATH>... 64 65ARGS: 66 <PATH>... Stuff to add 67 68OPTIONS: 69 -h, --help Print help information 70 71$ git add Cargo.toml Cargo.lock 72Adding ["Cargo.toml", "Cargo.lock"] 73 74``` 75 76Default subcommand: 77```console 78$ git stash -h 79git[EXE]-stash 80 81USAGE: 82 git[EXE] stash [OPTIONS] 83 git[EXE] stash <SUBCOMMAND> 84 85OPTIONS: 86 -h, --help Print help information 87 -m, --message <MESSAGE> 88 89SUBCOMMANDS: 90 apply 91 help Print this message or the help of the given subcommand(s) 92 pop 93 push 94 95$ git stash push -h 96git[EXE]-stash-push 97 98USAGE: 99 git[EXE] stash push [OPTIONS] 100 101OPTIONS: 102 -h, --help Print help information 103 -m, --message <MESSAGE> 104 105$ git stash pop -h 106git[EXE]-stash-pop 107 108USAGE: 109 git[EXE] stash pop [STASH] 110 111ARGS: 112 <STASH> 113 114OPTIONS: 115 -h, --help Print help information 116 117$ git stash -m "Prototype" 118Pushing Some("Prototype") 119 120$ git stash pop 121Popping None 122 123$ git stash push -m "Prototype" 124Pushing Some("Prototype") 125 126$ git stash pop 127Popping None 128 129``` 130 131External subcommands: 132```console 133$ git custom-tool arg1 --foo bar 134Calling out to "custom-tool" with ["arg1", "--foo", "bar"] 135 136``` 137