Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1 | git-add(1) |
| 2 | ========== |
| 3 | |
| 4 | NAME |
| 5 | ---- |
Junio C Hamano | 4cd1c0e | 2007-08-06 04:39:14 | [diff] [blame] | 6 | git-add - Add file contents to the index |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 7 | |
| 8 | SYNOPSIS |
| 9 | -------- |
Junio C Hamano | 8b8b0f2 | 2007-08-26 22:10:26 | [diff] [blame] | 10 | [verse] |
Junio C Hamano | fce7c7e | 2008-07-02 03:06:38 | [diff] [blame] | 11 | 'git add' [-n] [-v] [--force | -f] [--interactive | -i] [--patch | -p] |
Junio C Hamano | 52ba295 | 2009-05-18 17:43:02 | [diff] [blame] | 12 | [--edit | -e] [--all | [--update | -u]] [--intent-to-add | -N] |
Junio C Hamano | 27a128b | 2009-08-13 01:23:00 | [diff] [blame] | 13 | [--refresh] [--ignore-errors] [--] [<filepattern>...] |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 14 | |
| 15 | DESCRIPTION |
| 16 | ----------- |
Junio C Hamano | 4cd1c0e | 2007-08-06 04:39:14 | [diff] [blame] | 17 | This command adds the current content of new or modified files to the |
| 18 | index, thus staging that content for inclusion in the next commit. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 19 | |
Junio C Hamano | 4cd1c0e | 2007-08-06 04:39:14 | [diff] [blame] | 20 | The "index" holds a snapshot of the content of the working tree, and it |
| 21 | is this snapshot that is taken as the contents of the next commit. Thus |
| 22 | after making any changes to the working directory, and before running |
| 23 | the commit command, you must use the 'add' command to add any new or |
| 24 | modified files to the index. |
Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 25 | |
Junio C Hamano | 4cd1c0e | 2007-08-06 04:39:14 | [diff] [blame] | 26 | This command can be performed multiple times before a commit. It only |
| 27 | adds the content of the specified file(s) at the time the add command is |
| 28 | run; if you want subsequent changes included in the next commit, then |
| 29 | you must run 'git add' again to add the new content to the index. |
Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 30 | |
Junio C Hamano | 4cd1c0e | 2007-08-06 04:39:14 | [diff] [blame] | 31 | The 'git status' command can be used to obtain a summary of which |
| 32 | files have changes that are staged for the next commit. |
| 33 | |
Junio C Hamano | 3c1f2c7 | 2007-08-17 07:48:05 | [diff] [blame] | 34 | The 'git add' command will not add ignored files by default. If any |
| 35 | ignored files were explicitly specified on the command line, 'git add' |
| 36 | will fail with a list of ignored files. Ignored files reached by |
Junio C Hamano | 7d9e9bd | 2007-08-29 07:31:47 | [diff] [blame] | 37 | directory recursion or filename globbing performed by Git (quote your |
| 38 | globs before the shell) will be silently ignored. The 'add' command can |
| 39 | be used to add ignored files with the `-f` (force) option. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 40 | |
Junio C Hamano | 35738e8 | 2008-01-07 07:55:46 | [diff] [blame] | 41 | Please see linkgit:git-commit[1] for alternative ways to add content to a |
Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 42 | commit. |
| 43 | |
| 44 | |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 45 | OPTIONS |
| 46 | ------- |
Junio C Hamano | 8b8b0f2 | 2007-08-26 22:10:26 | [diff] [blame] | 47 | <filepattern>...:: |
Junio C Hamano | 3d2adc7 | 2006-12-26 03:21:45 | [diff] [blame] | 48 | Files to add content from. Fileglobs (e.g. `*.c`) can |
| 49 | be given to add all matching files. Also a |
| 50 | leading directory name (e.g. `dir` to add `dir/file1` |
| 51 | and `dir/file2`) can be given to add all files in the |
| 52 | directory, recursively. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 53 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 54 | -n:: |
| 55 | --dry-run:: |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 56 | Don't actually add the file(s), just show if they exist. |
| 57 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 58 | -v:: |
| 59 | --verbose:: |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 60 | Be verbose. |
| 61 | |
Junio C Hamano | 3d2adc7 | 2006-12-26 03:21:45 | [diff] [blame] | 62 | -f:: |
Junio C Hamano | 00e884a | 2008-06-15 05:10:38 | [diff] [blame] | 63 | --force:: |
Junio C Hamano | 3d2adc7 | 2006-12-26 03:21:45 | [diff] [blame] | 64 | Allow adding otherwise ignored files. |
| 65 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 66 | -i:: |
| 67 | --interactive:: |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 68 | Add modified contents in the working tree interactively to |
Junio C Hamano | e0facb9 | 2007-12-05 10:59:48 | [diff] [blame] | 69 | the index. Optional path arguments may be supplied to limit |
| 70 | operation to a subset of the working tree. See ``Interactive |
| 71 | mode'' for details. |
| 72 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 73 | -p:: |
| 74 | --patch:: |
Junio C Hamano | 7df6dcf | 2009-09-13 09:51:17 | [diff] [blame] | 75 | Interactively choose hunks of patch between the index and the |
| 76 | work tree and add them to the index. This gives the user a chance |
| 77 | to review the difference before adding modified contents to the |
| 78 | index. |
Junio C Hamano | e1b2683 | 2009-11-15 10:02:56 | [diff] [blame^] | 79 | + |
| 80 | This effectively runs `add --interactive`, but bypasses the |
| 81 | initial command menu and directly jumps to the `patch` subcommand. |
| 82 | See ``Interactive mode'' for details. |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 83 | |
Junio C Hamano | 52ba295 | 2009-05-18 17:43:02 | [diff] [blame] | 84 | -e, \--edit:: |
| 85 | Open the diff vs. the index in an editor and let the user |
| 86 | edit it. After the editor was closed, adjust the hunk headers |
| 87 | and apply the patch to the index. |
| 88 | + |
| 89 | *NOTE*: Obviously, if you change anything else than the first character |
| 90 | on lines beginning with a space or a minus, the patch will no longer |
| 91 | apply. |
| 92 | |
Junio C Hamano | 3d30fd5 | 2007-05-08 00:32:53 | [diff] [blame] | 93 | -u:: |
Junio C Hamano | 00e884a | 2008-06-15 05:10:38 | [diff] [blame] | 94 | --update:: |
Junio C Hamano | 6d76d61 | 2008-05-09 05:46:08 | [diff] [blame] | 95 | Update only files that git already knows about, staging modified |
| 96 | content for commit and marking deleted files for removal. This |
| 97 | is similar |
Junio C Hamano | 0430e3a | 2007-05-15 03:13:17 | [diff] [blame] | 98 | to what "git commit -a" does in preparation for making a commit, |
| 99 | except that the update is limited to paths specified on the |
Junio C Hamano | 83d46a2 | 2008-02-21 02:29:42 | [diff] [blame] | 100 | command line. If no paths are specified, all tracked files in the |
| 101 | current directory and its subdirectories are updated. |
Junio C Hamano | 3d30fd5 | 2007-05-08 00:32:53 | [diff] [blame] | 102 | |
Junio C Hamano | 5ba2c22 | 2008-07-21 04:33:46 | [diff] [blame] | 103 | -A:: |
| 104 | --all:: |
| 105 | Update files that git already knows about (same as '\--update') |
| 106 | and add all untracked files that are not ignored by '.gitignore' |
| 107 | mechanism. |
| 108 | |
Junio C Hamano | 845880c | 2008-10-21 19:04:45 | [diff] [blame] | 109 | |
| 110 | -N:: |
| 111 | --intent-to-add:: |
| 112 | Record only the fact that the path will be added later. An entry |
| 113 | for the path is placed in the index with no content. This is |
| 114 | useful for, among other things, showing the unstaged content of |
Junio C Hamano | 610d176 | 2008-11-28 06:27:13 | [diff] [blame] | 115 | such files with 'git diff' and committing them with 'git commit |
Junio C Hamano | 845880c | 2008-10-21 19:04:45 | [diff] [blame] | 116 | -a'. |
| 117 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 118 | --refresh:: |
Junio C Hamano | 024b6c6 | 2007-08-14 09:43:08 | [diff] [blame] | 119 | Don't add the file(s), but only refresh their stat() |
| 120 | information in the index. |
| 121 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 122 | --ignore-errors:: |
Junio C Hamano | feeb1be | 2008-05-22 00:53:35 | [diff] [blame] | 123 | If some files could not be added because of errors indexing |
| 124 | them, do not abort the operation, but continue adding the |
| 125 | others. The command shall still exit with non-zero status. |
| 126 | |
Junio C Hamano | 1bb569e | 2006-05-05 23:14:25 | [diff] [blame] | 127 | \--:: |
Junio C Hamano | 7e9f6b7 | 2006-02-22 10:44:55 | [diff] [blame] | 128 | This option can be used to separate command-line options from |
| 129 | the list of files, (useful when filenames might be mistaken |
| 130 | for command-line options). |
| 131 | |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 132 | |
Junio C Hamano | 9fbd4f7 | 2007-05-18 15:54:37 | [diff] [blame] | 133 | Configuration |
| 134 | ------------- |
| 135 | |
| 136 | The optional configuration variable 'core.excludesfile' indicates a path to a |
| 137 | file containing patterns of file names to exclude from git-add, similar to |
| 138 | $GIT_DIR/info/exclude. Patterns in the exclude file are used in addition to |
Junio C Hamano | fce7c7e | 2008-07-02 03:06:38 | [diff] [blame] | 139 | those in info/exclude. See linkgit:gitrepository-layout[5]. |
Junio C Hamano | 9fbd4f7 | 2007-05-18 15:54:37 | [diff] [blame] | 140 | |
| 141 | |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 142 | EXAMPLES |
| 143 | -------- |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 144 | |
Junio C Hamano | 6d76d61 | 2008-05-09 05:46:08 | [diff] [blame] | 145 | * Adds content from all `\*.txt` files under `Documentation` directory |
| 146 | and its subdirectories: |
| 147 | + |
| 148 | ------------ |
| 149 | $ git add Documentation/\\*.txt |
| 150 | ------------ |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 151 | + |
| 152 | Note that the asterisk `\*` is quoted from the shell in this |
Junio C Hamano | f8a7922 | 2009-03-01 08:02:50 | [diff] [blame] | 153 | example; this lets the command include the files from |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 154 | subdirectories of `Documentation/` directory. |
| 155 | |
Junio C Hamano | 6d76d61 | 2008-05-09 05:46:08 | [diff] [blame] | 156 | * Considers adding content from all git-*.sh scripts: |
| 157 | + |
| 158 | ------------ |
| 159 | $ git add git-*.sh |
| 160 | ------------ |
| 161 | + |
Junio C Hamano | f8a7922 | 2009-03-01 08:02:50 | [diff] [blame] | 162 | Because this example lets the shell expand the asterisk (i.e. you are |
Junio C Hamano | 6d76d61 | 2008-05-09 05:46:08 | [diff] [blame] | 163 | listing the files explicitly), it does not consider |
| 164 | `subdir/git-foo.sh`. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 165 | |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 166 | Interactive mode |
| 167 | ---------------- |
| 168 | When the command enters the interactive mode, it shows the |
Junio C Hamano | f9771f6 | 2007-01-17 17:42:30 | [diff] [blame] | 169 | output of the 'status' subcommand, and then goes into its |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 170 | interactive command loop. |
| 171 | |
| 172 | The command loop shows the list of subcommands available, and |
| 173 | gives a prompt "What now> ". In general, when the prompt ends |
| 174 | with a single '>', you can pick only one of the choices given |
| 175 | and type return, like this: |
| 176 | |
| 177 | ------------ |
| 178 | *** Commands *** |
| 179 | 1: status 2: update 3: revert 4: add untracked |
| 180 | 5: patch 6: diff 7: quit 8: help |
| 181 | What now> 1 |
| 182 | ------------ |
| 183 | |
| 184 | You also could say "s" or "sta" or "status" above as long as the |
| 185 | choice is unique. |
| 186 | |
| 187 | The main command loop has 6 subcommands (plus help and quit). |
| 188 | |
| 189 | status:: |
| 190 | |
| 191 | This shows the change between HEAD and index (i.e. what will be |
| 192 | committed if you say "git commit"), and between index and |
| 193 | working tree files (i.e. what you could stage further before |
| 194 | "git commit" using "git-add") for each path. A sample output |
| 195 | looks like this: |
| 196 | + |
| 197 | ------------ |
| 198 | staged unstaged path |
| 199 | 1: binary nothing foo.png |
| 200 | 2: +403/-35 +1/-1 git-add--interactive.perl |
| 201 | ------------ |
| 202 | + |
| 203 | It shows that foo.png has differences from HEAD (but that is |
| 204 | binary so line count cannot be shown) and there is no |
| 205 | difference between indexed copy and the working tree |
| 206 | version (if the working tree version were also different, |
| 207 | 'binary' would have been shown in place of 'nothing'). The |
| 208 | other file, git-add--interactive.perl, has 403 lines added |
| 209 | and 35 lines deleted if you commit what is in the index, but |
| 210 | working tree file has further modifications (one addition and |
| 211 | one deletion). |
| 212 | |
| 213 | update:: |
| 214 | |
Junio C Hamano | f8a7922 | 2009-03-01 08:02:50 | [diff] [blame] | 215 | This shows the status information and issues an "Update>>" |
| 216 | prompt. When the prompt ends with double '>>', you can |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 217 | make more than one selection, concatenated with whitespace or |
| 218 | comma. Also you can say ranges. E.g. "2-5 7,9" to choose |
Junio C Hamano | 38ddcce | 2008-07-15 15:49:03 | [diff] [blame] | 219 | 2,3,4,5,7,9 from the list. If the second number in a range is |
| 220 | omitted, all remaining patches are taken. E.g. "7-" to choose |
| 221 | 7,8,9 from the list. You can say '*' to choose everything. |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 222 | + |
| 223 | What you chose are then highlighted with '*', |
| 224 | like this: |
| 225 | + |
| 226 | ------------ |
| 227 | staged unstaged path |
| 228 | 1: binary nothing foo.png |
| 229 | * 2: +403/-35 +1/-1 git-add--interactive.perl |
| 230 | ------------ |
| 231 | + |
| 232 | To remove selection, prefix the input with `-` |
| 233 | like this: |
| 234 | + |
| 235 | ------------ |
| 236 | Update>> -2 |
| 237 | ------------ |
| 238 | + |
| 239 | After making the selection, answer with an empty line to stage the |
| 240 | contents of working tree files for selected paths in the index. |
| 241 | |
| 242 | revert:: |
| 243 | |
| 244 | This has a very similar UI to 'update', and the staged |
| 245 | information for selected paths are reverted to that of the |
| 246 | HEAD version. Reverting new paths makes them untracked. |
| 247 | |
| 248 | add untracked:: |
| 249 | |
| 250 | This has a very similar UI to 'update' and |
| 251 | 'revert', and lets you add untracked paths to the index. |
| 252 | |
| 253 | patch:: |
| 254 | |
Junio C Hamano | f8a7922 | 2009-03-01 08:02:50 | [diff] [blame] | 255 | This lets you choose one path out of a 'status' like selection. |
| 256 | After choosing the path, it presents the diff between the index |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 257 | and the working tree file and asks you if you want to stage |
| 258 | the change of each hunk. You can say: |
| 259 | |
Junio C Hamano | 8760ea6 | 2008-03-14 08:58:45 | [diff] [blame] | 260 | y - stage this hunk |
| 261 | n - do not stage this hunk |
Junio C Hamano | 3bd66e9 | 2009-04-18 06:17:56 | [diff] [blame] | 262 | q - quit, do not stage this hunk nor any of the remaining ones |
Junio C Hamano | 8760ea6 | 2008-03-14 08:58:45 | [diff] [blame] | 263 | a - stage this and all the remaining hunks in the file |
| 264 | d - do not stage this hunk nor any of the remaining hunks in the file |
Junio C Hamano | 3bd66e9 | 2009-04-18 06:17:56 | [diff] [blame] | 265 | g - select a hunk to go to |
| 266 | / - search for a hunk matching the given regex |
Junio C Hamano | 8760ea6 | 2008-03-14 08:58:45 | [diff] [blame] | 267 | j - leave this hunk undecided, see next undecided hunk |
| 268 | J - leave this hunk undecided, see next hunk |
| 269 | k - leave this hunk undecided, see previous undecided hunk |
| 270 | K - leave this hunk undecided, see previous hunk |
Junio C Hamano | e0facb9 | 2007-12-05 10:59:48 | [diff] [blame] | 271 | s - split the current hunk into smaller hunks |
Junio C Hamano | 46a38aa | 2008-07-14 03:13:27 | [diff] [blame] | 272 | e - manually edit the current hunk |
Junio C Hamano | e0facb9 | 2007-12-05 10:59:48 | [diff] [blame] | 273 | ? - print help |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 274 | + |
| 275 | After deciding the fate for all hunks, if there is any hunk |
| 276 | that was chosen, the index is updated with the selected hunks. |
| 277 | |
| 278 | diff:: |
| 279 | |
| 280 | This lets you review what will be committed (i.e. between |
| 281 | HEAD and index). |
| 282 | |
Junio C Hamano | 9049d91 | 2008-05-29 02:09:50 | [diff] [blame] | 283 | SEE ALSO |
Junio C Hamano | 2bb1310 | 2006-03-06 07:10:21 | [diff] [blame] | 284 | -------- |
Junio C Hamano | 35738e8 | 2008-01-07 07:55:46 | [diff] [blame] | 285 | linkgit:git-status[1] |
| 286 | linkgit:git-rm[1] |
| 287 | linkgit:git-reset[1] |
| 288 | linkgit:git-mv[1] |
| 289 | linkgit:git-commit[1] |
| 290 | linkgit:git-update-index[1] |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 291 | |
| 292 | Author |
| 293 | ------ |
| 294 | Written by Linus Torvalds <torvalds@osdl.org> |
| 295 | |
| 296 | Documentation |
| 297 | -------------- |
| 298 | Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>. |
| 299 | |
| 300 | GIT |
| 301 | --- |
Junio C Hamano | f7c042d | 2008-06-06 22:50:53 | [diff] [blame] | 302 | Part of the linkgit:git[1] suite |