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

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


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 linkgit:git[1] suite
