module Git::Commands

Internal command layer for the git gem

Each git operation is represented by a class within this namespace. Command classes define the CLI contract via the {Arguments} DSL, bind caller-supplied parameters to command-line flags and operands, execute the subprocess through {Git::CommandLine}, and return a raw {Git::CommandLine::Result}.

Commands do not parse output β€” that responsibility belongs to the {Git::Parsers} layer, orchestrated by the facade ({Git::Repository}).

All classes in this namespace are internal (β€˜@api private`). End users should interact with the public API on {Git::Repository} instead.

## Architecture

β€œβ€˜ Git::Repository (public API / facade β€” orchestrates commands + parsers)

└── Git::Commands::* (defines CLI API, binds args, executes)
      └── Git::CommandLine (subprocess execution)

β€œβ€˜

Simple commands inherit from {Commands::Base} and only need an β€˜arguments` block. Multi-mode git commands (e.g., `git branch`, `git stash`) are split into namespace modules with one class per mode.

@see Git::Commands::Base

@see Git::Commands::Arguments

@api private