git-update-index(1)
===================

NAME
----
git-update-index - Modifies the index or directory cache


SYNOPSIS
--------
'git-update-index'
	     [--add] [--remove | --force-remove] [--replace] 
	     [--refresh [-q] [--unmerged] [--ignore-missing]]
	     [--cacheinfo <mode> <object> <file>]\*
	     [--chmod=(+|-)x]
	     [--info-only] [--index-info]
	     [-z] [--stdin]
	     [--verbose]
	     [--] [<file>]\*

DESCRIPTION
-----------
Modifies the index or directory cache. Each file mentioned is updated
into the index and any 'unmerged' or 'needs updating' state is
cleared.

The way "git-update-index" handles files it is told about can be modified
using the various options:

OPTIONS
-------
--add::
	If a specified file isn't in the index already then it's
	added.
	Default behaviour is to ignore new files.

--remove::
	If a specified file is in the index but is missing then it's
	removed.
	Default behaviour is to ignore removed file.

--refresh::
	Looks at the current index and checks to see if merges or
	updates are needed by checking stat() information.

-q::
        Quiet.  If --refresh finds that the index needs an update, the
        default behavior is to error out.  This option makes
        git-update-index continue anyway.

--unmerged::
        If --refresh finds unmerged changes in the index, the default
        behavior is to error out.  This option makes git-update-index 
        continue anyway.

--ignore-missing::
	Ignores missing files during a --refresh

--cacheinfo <mode> <object> <path>::
	Directly insert the specified info into the index.
	
--index-info::
        Read index information from stdin.

--chmod=(+|-)x::
        Set the execute permissions on the updated files.        

--info-only::
	Do not create objects in the object database for all
	<file> arguments that follow this flag; just insert
	their object IDs into the index.

--force-remove::
	Remove the file from the index even when the working directory
	still has such a file. (Implies --remove.)

--replace::
	By default, when a file `path` exists in the index,
	git-update-index refuses an attempt to add `path/file`.
	Similarly if a file `path/file` exists, a file `path`
	cannot be added.  With --replace flag, existing entries
	that conflicts with the entry being added are
	automatically removed with warning messages.

--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.

--verbose::
        Report what is being added and removed from index.

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

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

<file>::
	Files to act on.
	Note that files beginning with '.' are discarded. This includes
	`./file` and `dir/./file`. If you don't want this, then use	
	cleaner names.
	The same applies to directories ending '/' and paths with '//'

Using --refresh
---------------
'--refresh' does not calculate a new sha1 file or bring the index
up-to-date for mode/content changes. But what it *does* do is to
"re-match" the stat information of a file with the index, so that you
can refresh the index for a file that hasn't been changed but where
the stat entry is out of date.

For example, you'd want to do this after doing a "git-read-tree", to link
up the stat index details with the proper files.

Using --cacheinfo or --info-only
--------------------------------
'--cacheinfo' is used to register a file that is not in the
current working directory.  This is useful for minimum-checkout
merging.

To pretend you have a file with mode and sha1 at path, say:

----------------
$ git-update-index --cacheinfo mode sha1 path
----------------

'--info-only' is used to register files without placing them in the object
database.  This is useful for status-only repositories.

Both '--cacheinfo' and '--info-only' behave similarly: the index is updated
but the object database isn't.  '--cacheinfo' is useful when the object is
in the database but the file isn't available locally.  '--info-only' is
useful when the file is available, but you do not wish to update the
object database.


Using --index-info
------------------

`--index-info` is a more powerful mechanism that lets you feed
multiple entry definitions from the standard input, and designed
specifically for scripts.  It can take inputs of three formats:

    . mode         SP sha1          TAB path
+
The first format is what "git-apply --index-info"
reports, and used to reconstruct a partial tree
that is used for phony merge base tree when falling
back on 3-way merge.

    . mode SP type SP sha1          TAB path
+
The second format is to stuff git-ls-tree output
into the index file.

    . mode         SP sha1 SP stage TAB path
+
This format is to put higher order stages into the
index file and matches git-ls-files --stage output.

To place a higher stage entry to the index, the path should
first be removed by feeding a mode=0 entry for the path, and
then feeding necessary input lines in the third format.

For example, starting with this index:

------------
$ git ls-files -s
100644 8a1218a1024a212bb3db30becd860315f9f3ac52 0       frotz
------------

you can feed the following input to `--index-info`:

------------
$ git update-index --index-info
0 0000000000000000000000000000000000000000	frotz
100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1	frotz
100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2	frotz
------------

The first line of the input feeds 0 as the mode to remove the
path; the SHA1 does not matter as long as it is well formatted.
Then the second and third line feeds stage 1 and stage 2 entries
for that path.  After the above, we would end up with this:

------------
$ git ls-files -s
100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1	frotz
100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2	frotz
------------


Examples
--------
To update and refresh only the files already checked out:

----------------
$ git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh
----------------


Configuration
-------------

The command honors `core.filemode` configuration variable.  If
your repository is on an filesystem whose executable bits are
unreliable, this should be set to 'false' (see gitlink:git-repo-config[1]).
This causes the command to ignore differences in file modes recorded
in the index and the file mode on the filesystem if they differ only on
executable bit.   On such an unfortunate filesystem, you may
need to use `git-update-index --chmod=`.


See Also
--------
gitlink:git-repo-config[1]


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

