.\"Generated by db2man.xsl. Don't modify this, modify the source. .de Sh \" Subsection .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Ip \" List item .br .ie \\n(.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. .TH "GIT-UPDATE-INDEX" 1 "" "" "" .SH NAME git-update-index \- Modifies the index or directory cache .SH "SYNOPSIS" git\-update\-index [\-\-add] [\-\-remove | \-\-force\-remove] [\-\-replace] [\-\-refresh [\-q] [\-\-unmerged] [\-\-ignore\-missing]] [\-\-cacheinfo ]* [\-\-chmod=(+|\-)x] [\-\-info\-only] [\-\-index\-info] [\-z] [\-\-stdin] [\-\-verbose] [\-\-] []* .SH "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: .SH "OPTIONS" .TP \-\-add If a specified file isn't in the index already then it's added\&. Default behaviour is to ignore new files\&. .TP \-\-remove If a specified file is in the index but is missing then it's removed\&. Default behaviour is to ignore removed file\&. .TP \-\-refresh Looks at the current index and checks to see if merges or updates are needed by checking stat() information\&. .TP \-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\&. .TP \-\-unmerged If \-\-refresh finds unmerged changes in the index, the default behavior is to error out\&. This option makes git\-update\-index continue anyway\&. .TP \-\-ignore\-missing Ignores missing files during a \-\-refresh .TP \-\-cacheinfo Directly insert the specified info into the index\&. .TP \-\-index\-info Read index information from stdin\&. .TP \-\-chmod=(+|\-)x Set the execute permissions on the updated files\&. .TP \-\-info\-only Do not create objects in the object database for all arguments that follow this flag; just insert their object IDs into the index\&. .TP \-\-force\-remove Remove the file from the index even when the working directory still has such a file\&. (Implies \-\-remove\&.) .TP \-\-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\&. .TP \-\-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\&. .TP \-\-verbose Report what is being added and removed from index\&. .TP \-z Only meaningful with \-\-stdin; paths are separated with NUL character instead of LF\&. .TP -- Do not interpret any more arguments as options\&. .TP 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 // .SH "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\&. .SH "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: .IP $ 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\&. .SH "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: .TP 3 1. 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\&. .TP 2. mode SP type SP sha1 TAB path The second format is to stuff git\-ls\-tree output into the index file\&. .TP 3. 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\&. .LP 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: .IP $ git ls\-files \-s 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 0 frotz you can feed the following input to \-\-index\-info: .IP $ 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: .IP $ git ls\-files \-s 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1 frotz 100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz .SH "EXAMPLES" To update and refresh only the files already checked out: .IP $ git\-checkout\-index \-n \-f \-a && git\-update\-index \-\-ignore\-missing \-\-refresh .SH "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 \fBgit\-repo\-config\fR(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=\&. .SH "SEE ALSO" \fBgit\-repo\-config\fR(1) .SH "AUTHOR" Written by Linus Torvalds .SH "DOCUMENTATION" Documentation by David Greaves, Junio C Hamano and the git\-list \&. .SH "GIT" Part of the \fBgit\fR(7) suite