gitcli(7)
=========

NAME
----
gitcli - git command line interface and conventions

SYNOPSIS
--------
gitcli


DESCRIPTION
-----------

This manual describes best practice in how to use git CLI.  Here are
the rules that you should follow when you are scripting git:

 * it's preferred to use the non dashed form of git commands, which means that
   you should prefer `"git foo"` to `"git-foo"`.

 * splitting short options to separate words (prefer `"git foo -a -b"`
   to `"git foo -ab"`, the latter may not even work).

 * when a command line option takes an argument, use the 'sticked' form.  In
   other words, write `"git foo -oArg"` instead of `"git foo -o Arg"` for short
   options, and `"git foo --long-opt=Arg"` instead of `"git foo --long-opt Arg"`
   for long options.  An option that takes optional option-argument must be
   written in the 'sticked' form.

 * when you give a revision parameter to a command, make sure the parameter is
   not ambiguous with a name of a file in the work tree.  E.g. do not write
   `"git log -1 HEAD"` but write `"git log -1 HEAD --"`; the former will not work
   if you happen to have a file called `HEAD` in the work tree.


ENHANCED CLI
------------
From the git 1.5.4 series and further, many git commands (not all of them at the
time of the writing though) come with an enhanced option parser.

Here is an exhaustive list of the facilities provided by this option parser.


Magic Options
~~~~~~~~~~~~~
Commands which have the enhanced option parser activated all understand a
couple of magic command line options:

-h::
	gives a pretty printed usage of the command.
+
---------------------------------------------
$ git describe -h
usage: git-describe [options] <committish>*

    --contains            find the tag that comes after the commit
    --debug               debug search strategy on stderr
    --all                 use any ref in .git/refs
    --tags                use any tag in .git/refs/tags
    --abbrev [<n>]        use <n> digits to display SHA-1s
    --candidates <n>      consider <n> most recent tags (default: 10)
---------------------------------------------

--help-all::
	Some git commands take options that are only used for plumbing or that
	are deprecated, and such options are hidden from the default usage. This
	option gives the full list of options.


Negating options
~~~~~~~~~~~~~~~~
Options with long option names can be negated by prefixing `"--no-"`. For
example, `"git branch"` has the option `"--track"` which is 'on' by default. You
can use `"--no-track"` to override that behaviour. The same goes for `"--color"`
and `"--no-color"`.


Aggregating short options
~~~~~~~~~~~~~~~~~~~~~~~~~
Commands that support the enhanced option parser allow you to aggregate short
options. This means that you can for example use `"git rm -rf"` or
`"git clean -fdx"`.


Separating argument from the option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can write the mandatory option parameter to an option as a separate
word on the command line.  That means that all the following uses work:

----------------------------
$ git foo --long-opt=Arg
$ git foo --long-opt Arg
$ git foo -oArg
$ git foo -o Arg
----------------------------

However, this is *NOT* allowed for switches with an optional value, where the
'sticked' form must be used:
----------------------------
$ git describe --abbrev HEAD     # correct
$ git describe --abbrev=10 HEAD  # correct
$ git describe --abbrev 10 HEAD  # NOT WHAT YOU MEANT
----------------------------


Documentation
-------------
Documentation by Pierre Habouzit.

GIT
---
Part of the linkgit:git[1] suite
