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

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'.  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=`.

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

