Autogenerated man pages for 36de72aa9dc3b7daf8cf2770c840f39bb0d2ae70
[git.git] / man1 / git-update-index.1
1 .\"Generated by db2man.xsl. Don't modify this, modify the source.
2 .de Sh \" Subsection
3 .br
4 .if t .Sp
5 .ne 5
6 .PP
7 \fB\\$1\fR
8 .PP
9 ..
10 .de Sp \" Vertical space (when we can't use .PP)
11 .if t .sp .5v
12 .if n .sp
13 ..
14 .de Ip \" List item
15 .br
16 .ie \\n(.$>=3 .ne \\$3
17 .el .ne 3
18 .IP "\\$1" \\$2
19 ..
20 .TH "GIT-UPDATE-INDEX" 1 "" "" ""
21 .SH NAME
22 git-update-index \- Modifies the index or directory cache
23 .SH "SYNOPSIS"
24
25
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>]*
27
28 .SH "DESCRIPTION"
29
30
31 Modifies the index or directory cache\&. Each file mentioned is updated into the index and any unmerged or needs updating state is cleared\&.
32
33
34 The way "git\-update\-index" handles files it is told about can be modified using the various options:
35
36 .SH "OPTIONS"
37
38 .TP
39 \-\-add
40 If a specified file isn't in the index already then it's added\&. Default behaviour is to ignore new files\&.
41
42 .TP
43 \-\-remove
44 If a specified file is in the index but is missing then it's removed\&. Default behaviour is to ignore removed file\&.
45
46 .TP
47 \-\-refresh
48 Looks at the current index and checks to see if merges or updates are needed by checking stat() information\&.
49
50 .TP
51 \-q
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\&.
53
54 .TP
55 \-\-unmerged
56 If \-\-refresh finds unmerged changes in the index, the default behavior is to error out\&. This option makes git\-update\-index continue anyway\&.
57
58 .TP
59 \-\-ignore\-missing
60 Ignores missing files during a \-\-refresh
61
62 .TP
63 \-\-cacheinfo <mode> <object> <path>
64 Directly insert the specified info into the index\&.
65
66 .TP
67 \-\-index\-info
68 Read index information from stdin\&.
69
70 .TP
71 \-\-chmod=(+|\-)x
72 Set the execute permissions on the updated files\&.
73
74 .TP
75 \-\-info\-only
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\&.
77
78 .TP
79 \-\-force\-remove
80 Remove the file from the index even when the working directory still has such a file\&. (Implies \-\-remove\&.)
81
82 .TP
83 \-\-replace
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\&.
85
86 .TP
87 \-\-stdin
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\&.
89
90 .TP
91 \-\-verbose
92 Report what is being added and removed from index\&.
93
94 .TP
95 \-z
96 Only meaningful with \-\-stdin; paths are separated with NUL character instead of LF\&.
97
98 .TP
99 --
100 Do not interpret any more arguments as options\&.
101
102 .TP
103 <file>
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 // 
105
106 .SH "USING --REFRESH"
107
108
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\&.
110
111
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\&.
113
114 .SH "USING --CACHEINFO OR --INFO-ONLY"
115
116
117 \-\-cacheinfo is used to register a file that is not in the current working directory\&. This is useful for minimum\-checkout merging\&.
118
119
120 To pretend you have a file with mode and sha1 at path, say:
121
122 .IP
123 $ git\-update\-index \-\-cacheinfo mode sha1 path
124
125 \-\-info\-only is used to register files without placing them in the object database\&. This is useful for status\-only repositories\&.
126
127
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\&.
129
130 .SH "USING --INDEX-INFO"
131
132
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:
134
135 .TP 3
136 1.
137 mode SP sha1 TAB path
138
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\&.
140 .TP
141 2.
142 mode SP type SP sha1 TAB path
143
144 The second format is to stuff git\-ls\-tree output into the index file\&.
145 .TP
146 3.
147 mode SP sha1 SP stage TAB path
148
149 This format is to put higher order stages into the index file and matches git\-ls\-files \-\-stage output\&.
150 .LP
151
152
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\&.
154
155
156 For example, starting with this index:
157
158 .IP
159 $ git ls\-files \-s
160 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 0       frotz
161
162 you can feed the following input to \-\-index\-info:
163
164 .IP
165 $ git update\-index \-\-index\-info
166 0 0000000000000000000000000000000000000000      frotz
167 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1       frotz
168 100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2       frotz
169
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:
171
172 .IP
173 $ git ls\-files \-s
174 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1       frotz
175 100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2       frotz
176 .SH "EXAMPLES"
177
178
179 To update and refresh only the files already checked out:
180
181 .IP
182 $ git\-checkout\-index \-n \-f \-a && git\-update\-index \-\-ignore\-missing \-\-refresh
183 .SH "CONFIGURATION"
184
185
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=\&.
187
188 .SH "SEE ALSO"
189
190
191 \fBgit\-repo\-config\fR(1)
192
193 .SH "AUTHOR"
194
195
196 Written by Linus Torvalds <torvalds@osdl\&.org>
197
198 .SH "DOCUMENTATION"
199
200
201 Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
202
203 .SH "GIT"
204
205
206 Part of the \fBgit\fR(7) suite
207