Rasmus Villemoes <rv@xxxxxxxxxxxxxxxxxx> writes: > I often use 'git <cmd> --help' as a quick way to get the documentation > for a command. However, I've also trained my muscle memory to use my > aliases (cp=cherry-pick, co=checkout etc.), which means that I often end > up doing > > git cp --help > > to which git correctly informs me that cp is an alias for > cherry-pick. However, I already knew that, and what I really wanted was > the man page for the cherry-pick command. > > This introduces a help.followAlias config option that transparently > redirects to (the first word of) the alias text (provided of course it > is not a shell command), similar to the option for autocorrect of > misspelled commands. While I do agree with you that it would sometimes be very handy if "git cp --help" behaved identically to "git cherry-pick --help" just like "git cp -h" behaves identically to "git cherry-pick -h" when you have "[alias] cp = cherry-pick", I do not think help.followAlias configuration is a good idea. I may know, perhaps because I use it all the time, by heart that "cp" is aliased to "cherry-pick" and want "git cp --help" to directly give me the manpage, but I may not remember if "co" was commit or checkout and want to be concisely told that it is aliased to checkout without seeing the full manpage. Which means you'd want some way to command line override anyway, and having to say "git -c help.followAlias=false cp --help" is not a great solution. If we expect users to use "git cp --help" a lot more often than "git help cp" (or the other way around), one way to give a nicer experience may be to unconditionally make "git cp --help" to directly show the manpage of cherry-pick, while keeping "git help cp" to never do that. Then those who want to remember what "co" is aliased to can ask "git help co". > + /* > + * We use split_cmdline() to get the first word of the > + * alias, to ensure that we use the same rules as when > + * the alias is actually used. split_cmdline() > + * modifies alias in-place. > + */ > + count = split_cmdline(alias, &argv); > + if (count < 0) > + die("Bad alias.%s string: %s", cmd, > + split_cmdline_strerror(count)); > + > + if (follow_alias > 0) { > + fprintf_ln(stderr, > + _("Continuing to help for %s in %0.1f seconds."), > + alias, follow_alias/10.0); > + sleep_millisec(follow_alias * 100); > + } > + return alias; If you have "[alias] cp = cherry-pick -n", split_cmdline discards "-n" and the follow-alias prompt does not even tell you that it did so, and you get "git help cherry-pick". This code somehow expects you to know to jump to the section that describes the "--no-commit" option. I do not think that is a reasonable expectation. When you have "[alias] cp = cherry-pick -n", "git cp --help" should not do "git help cherry-pick". Only a single word that exactly matches a git command should get this treatment. > } > > if (exclude_guides)