Teng Long <dyroneteng@xxxxxxxxx> writes: > +test_must_fail 'Exchange the order of "--heads" and <remote>' ' > + git --version && > + git init "test.git" && > + test_commit -C "test.git" one && > + git -C "test.git" ls-remote --heads ./. > result.1 && > + git -C "test.git" ls-remote ./. --heads > result.2 && I would say that this is working exactly as designed. As with the unix tradition, after the command name, first come options (e.g. "--heads", "-v", etc. that begin with a dash or two dashes), then arguments like "origin", "master", "." that are not dashed options/flags. Then among the arguments, we generally take revs first and then pathspecs. "git help cli" explicitly mentions this, because it is specific to "git" command suite, but it does not mention "dashed options/flags first and then args", primarily because, at least back when the documentation was written, this was taken as granted, iow, those who wrote the "gitcli" documentation thought it was a common knowledge among users that did not need to be spelled out. Apparently, it is not a common knowledge at least for you (and probably others). Perhaps we should add a paragraph to the cli help and explicitly mention "options first and then args", before we go on to say "among args, revs first and then pathspecs".