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

