git-checkout-index(1)
=====================

NAME
----
git-checkout-index - Copy files from the index to the working directory


SYNOPSIS
--------
[verse]
'git-checkout-index' [-u] [-q] [-a] [-f] [-n] [--prefix=<string>]
		   [--stage=<number>|all]
		   [--temp]
		   [-z] [--stdin]
		   [--] [<file>]\*

DESCRIPTION
-----------
Will copy all files listed from the index to the working directory
(not overwriting existing files).

OPTIONS
-------
-u|--index::
	update stat information for the checked out entries in
	the index file.

-q|--quiet::
	be quiet if files exist or are not in the index

-f|--force::
	forces overwrite of existing files

-a|--all::
	checks out all files in the index.  Cannot be used
	together with explicit filenames.

-n|--no-create::
	Don't checkout new files, only refresh files already checked
	out.

--prefix=<string>::
	When creating files, prepend <string> (usually a directory
	including a trailing /)

--stage=<number>|all::
	Instead of checking out unmerged entries, copy out the
	files from named stage.  <number> must be between 1 and 3.
	Note: --stage=all automatically implies --temp.

--temp::
	Instead of copying the files to the working directory
	write the content to temporary files.  The temporary name
	associations will be written to stdout.

--stdin::
	Instead of taking list of paths from the command line,
	read list of paths from the standard input.  Paths are
	separated by LF (i.e. one path per line) by default.

-z::
	Only meaningful with `--stdin`; paths are separated with
	NUL character instead of LF.

\--::
	Do not interpret any more arguments as options.

The order of the flags used to matter, but not anymore.

Just doing `git-checkout-index` does nothing. You probably meant
`git-checkout-index -a`. And if you want to force it, you want
`git-checkout-index -f -a`.

Intuitiveness is not the goal here. Repeatability is. The reason for
the "no arguments means no work" behavior is that from scripts you are
supposed to be able to do:

----------------
$ find . -name '*.h' -print0 | xargs -0 git-checkout-index -f --
----------------

which will force all existing `*.h` files to be replaced with their
cached copies. If an empty command line implied "all", then this would
force-refresh everything in the index, which was not the point.  But
since git-checkout-index accepts --stdin it would be faster to use:

----------------
$ find . -name '*.h' -print0 | git-checkout-index -f -z --stdin
----------------

The `--` is just a good idea when you know the rest will be filenames;
it will prevent problems with a filename of, for example,  `-a`.
Using `--` is probably a good policy in scripts.


Using --temp or --stage=all
---------------------------
When `--temp` is used (or implied by `--stage=all`)
`git-checkout-index` will create a temporary file for each index
entry being checked out.  The index will not be updated with stat
information.  These options can be useful if the caller needs all
stages of all unmerged entries so that the unmerged files can be
processed by an external merge tool.

A listing will be written to stdout providing the association of
temporary file names to tracked path names.  The listing format
has two variations:

    . tempname TAB path RS
+
The first format is what gets used when `--stage` is omitted or
is not `--stage=all`. The field tempname is the temporary file
name holding the file content and path is the tracked path name in
the index.  Only the requested entries are output.

    . stage1temp SP stage2temp SP stage3tmp TAB path RS
+
The second format is what gets used when `--stage=all`.  The three
stage temporary fields (stage1temp, stage2temp, stage3temp) list the
name of the temporary file if there is a stage entry in the index
or `.` if there is no stage entry.  Paths which only have a stage 0
entry will always be omitted from the output.

In both formats RS (the record separator) is newline by default
but will be the null byte if -z was passed on the command line.
The temporary file names are always safe strings; they will never
contain directory separators or whitespace characters.  The path
field is always relative to the current directory and the temporary
file names are always relative to the top level directory.

If the object being copied out to a temporary file is a symbolic
link the content of the link will be written to a normal file.  It is
up to the end-user or the Porcelain to make use of this information.


EXAMPLES
--------
To update and refresh only the files already checked out::
+
----------------
$ git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh
----------------

Using `git-checkout-index` to "export an entire tree"::
	The prefix ability basically makes it trivial to use
	`git-checkout-index` as an "export as tree" function.
	Just read the desired tree into the index, and do:
+
----------------
$ git-checkout-index --prefix=git-export-dir/ -a
----------------
+
`git-checkout-index` will "export" the index into the specified
directory.
+
The final "/" is important. The exported name is literally just
prefixed with the specified string.  Contrast this with the
following example.

Export files with a prefix::
+
----------------
$ git-checkout-index --prefix=.merged- Makefile
----------------
+
This will check out the currently cached copy of `Makefile`
into the file `.merged-Makefile`.


Author
------
Written by Linus Torvalds <torvalds@osdl.org>


Documentation
--------------
Documentation by David Greaves,
Junio C Hamano and the git-list <git@vger.kernel.org>.


GIT
---
Part of the gitlink:git[7] suite

