1 .\"Generated by db2man.xsl. Don't modify this, modify the source.
10 .de Sp \" Vertical space (when we can't use .PP)
16 .ie \\n(.$>=3 .ne \\$3
20 .TH "GIT-UPDATE-INDEX" 1 "" "" ""
22 git-update-index \- Modifies the index or directory cache
26 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>]*
31 Modifies the index or directory cache\&. Each file mentioned is updated into the index and any unmerged or needs updating state is cleared\&.
34 The way "git\-update\-index" handles files it is told about can be modified using the various options:
40 If a specified file isn't in the index already then it's added\&. Default behaviour is to ignore new files\&.
44 If a specified file is in the index but is missing then it's removed\&. Default behaviour is to ignore removed file\&.
48 Looks at the current index and checks to see if merges or updates are needed by checking stat() information\&.
52 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\&.
56 If \-\-refresh finds unmerged changes in the index, the default behavior is to error out\&. This option makes git\-update\-index continue anyway\&.
60 Ignores missing files during a \-\-refresh
63 \-\-cacheinfo <mode> <object> <path>
64 Directly insert the specified info into the index\&.
68 Read index information from stdin\&.
72 Set the execute permissions on the updated files\&.
76 Do not create objects in the object database for all <file> arguments that follow this flag; just insert their object IDs into the index\&.
80 Remove the file from the index even when the working directory still has such a file\&. (Implies \-\-remove\&.)
84 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\&.
88 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\&.
92 Report what is being added and removed from index\&.
96 Only meaningful with \-\-stdin; paths are separated with NUL character instead of LF\&.
100 Do not interpret any more arguments as options\&.
104 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 //
106 .SH "USING --REFRESH"
109 \-\-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\&.
112 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\&.
114 .SH "USING --CACHEINFO OR --INFO-ONLY"
117 \-\-cacheinfo is used to register a file that is not in the current working directory\&. This is useful for minimum\-checkout merging\&.
120 To pretend you have a file with mode and sha1 at path, say:
123 $ git\-update\-index \-\-cacheinfo mode sha1 path
125 \-\-info\-only is used to register files without placing them in the object database\&. This is useful for status\-only repositories\&.
128 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\&.
130 .SH "USING --INDEX-INFO"
133 \-\-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:
137 mode SP sha1 TAB path
139 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\&.
142 mode SP type SP sha1 TAB path
144 The second format is to stuff git\-ls\-tree output into the index file\&.
147 mode SP sha1 SP stage TAB path
149 This format is to put higher order stages into the index file and matches git\-ls\-files \-\-stage output\&.
153 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\&.
156 For example, starting with this index:
160 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 0 frotz
162 you can feed the following input to \-\-index\-info:
165 $ git update\-index \-\-index\-info
166 0 0000000000000000000000000000000000000000 frotz
167 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1 frotz
168 100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz
170 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:
174 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1 frotz
175 100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz
179 To update and refresh only the files already checked out:
182 $ git\-checkout\-index \-n \-f \-a && git\-update\-index \-\-ignore\-missing \-\-refresh
186 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=\&.
191 \fBgit\-repo\-config\fR(1)
196 Written by Linus Torvalds <torvalds@osdl\&.org>
201 Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
206 Part of the \fBgit\fR(7) suite