How does man find git's subcommand manpages?

On my linux system, I can do “man git log” (note the space), and this will show me the manpage for git-log(1) (with a dash), as expected.

On my MacOSX machine, “man git log” only shows the manual page for git(1).

  • Why does terminal become unresponsive after I use certain git commands?
  • `git add -p` doesn't work with Ctrl+h
  • Accidentally committed dev database to Git
  • How to perform merge?
  • Does using Git make sense for small internal teams?
  • git-tfs local Git repo to TFVC
  • How does the linux man know that the two arguments “git” and “log” should be combined to find the “git-log” manpage? How would I get the same result in OSX?

  • Fatal error after GitHub automatic merge
  • Why is the `git subtree` not working even though I have git installed on Ubuntu 12.10?
  • Change a branch name in a Git repo
  • Clone a git repo (in depth)
  • Why can't I view a git object in an ordinary file editor?
  • Switch branch without committing the working code
  • One Solution collect form web for “How does man find git's subcommand manpages?”

    This is a feature of the particular implementation of man used on many Linux systems. Referring to the documentation (for man), it is mentioned in the description of the --no-subpages option:


    By default, man will try to interpret pairs of manual page
    names given on the command line as equivalent to a single
    manual page name containing a hyphen or an underscore. This
    supports the common pattern of programs that implement a
    number of subcommands, allowing them to provide manual pages
    for each that can be accessed using similar syntax as would be
    used to invoke the subcommands themselves.

    Other implementations of man can do different things. For instance (not well documented, but there if you study it), a quick check for man git status on OSX El Capitan shows it tries to find a manual page for status. However, man git-status gives a manual page.

    Git Baby is a git and github fan, let's start git clone.