1git-add(1) 2========== 3 4NAME 5---- 6git-add - Add file contents to the index 7 8SYNOPSIS 9-------- 10[verse] 11'git-add' [-n] [-v] [-f] [--interactive | -i] [-u] [--refresh] 12 [--] <filepattern>... 13 14DESCRIPTION 15----------- 16This command adds the current content of new or modified files to the 17index, thus staging that content for inclusion in the next commit. 18 19The "index" holds a snapshot of the content of the working tree, and it 20is this snapshot that is taken as the contents of the next commit. Thus 21after making any changes to the working directory, and before running 22the commit command, you must use the 'add' command to add any new or 23modified files to the index. 24 25This command can be performed multiple times before a commit. It only 26adds the content of the specified file(s) at the time the add command is 27run; if you want subsequent changes included in the next commit, then 28you must run 'git add' again to add the new content to the index. 29 30The 'git status' command can be used to obtain a summary of which 31files have changes that are staged for the next commit. 32 33The 'git add' command will not add ignored files by default. If any 34ignored files were explicitly specified on the command line, 'git add' 35will fail with a list of ignored files. Ignored files reached by 36directory recursion or filename globbing performed by Git (quote your 37globs before the shell) will be silently ignored. The 'add' command can 38be used to add ignored files with the `-f` (force) option. 39 40Please see gitlink:git-commit[1] for alternative ways to add content to a 41commit. 42 43 44OPTIONS 45------- 46<filepattern>...:: 47 Files to add content from. Fileglobs (e.g. `*.c`) can 48 be given to add all matching files. Also a 49 leading directory name (e.g. `dir` to add `dir/file1` 50 and `dir/file2`) can be given to add all files in the 51 directory, recursively. 52 53-n:: 54 Don't actually add the file(s), just show if they exist. 55 56-v:: 57 Be verbose. 58 59-f:: 60 Allow adding otherwise ignored files. 61 62-i, \--interactive:: 63 Add modified contents in the working tree interactively to 64 the index. 65 66-u:: 67 Update only files that git already knows about. This is similar 68 to what "git commit -a" does in preparation for making a commit, 69 except that the update is limited to paths specified on the 70 command line. If no paths are specified, all tracked files are 71 updated. 72 73\--refresh:: 74 Don't add the file(s), but only refresh their stat() 75 information in the index. 76 77\--:: 78 This option can be used to separate command-line options from 79 the list of files, (useful when filenames might be mistaken 80 for command-line options). 81 82 83Configuration 84------------- 85 86The optional configuration variable 'core.excludesfile' indicates a path to a 87file containing patterns of file names to exclude from git-add, similar to 88$GIT_DIR/info/exclude. Patterns in the exclude file are used in addition to 89those in info/exclude. See link:repository-layout.html[repository layout]. 90 91 92EXAMPLES 93-------- 94git-add Documentation/\\*.txt:: 95 96 Adds content from all `\*.txt` files under `Documentation` 97 directory and its subdirectories. 98+ 99Note that the asterisk `\*` is quoted from the shell in this 100example; this lets the command to include the files from 101subdirectories of `Documentation/` directory. 102 103git-add git-*.sh:: 104 105 Considers adding content from all git-*.sh scripts. 106 Because this example lets shell expand the asterisk 107 (i.e. you are listing the files explicitly), it does not 108 consider `subdir/git-foo.sh`. 109 110Interactive mode 111---------------- 112When the command enters the interactive mode, it shows the 113output of the 'status' subcommand, and then goes into its 114interactive command loop. 115 116The command loop shows the list of subcommands available, and 117gives a prompt "What now> ". In general, when the prompt ends 118with a single '>', you can pick only one of the choices given 119and type return, like this: 120 121------------ 122 *** Commands *** 123 1: status 2: update 3: revert 4: add untracked 124 5: patch 6: diff 7: quit 8: help 125 What now> 1 126------------ 127 128You also could say "s" or "sta" or "status" above as long as the 129choice is unique. 130 131The main command loop has 6 subcommands (plus help and quit). 132 133status:: 134 135 This shows the change between HEAD and index (i.e. what will be 136 committed if you say "git commit"), and between index and 137 working tree files (i.e. what you could stage further before 138 "git commit" using "git-add") for each path. A sample output 139 looks like this: 140+ 141------------ 142 staged unstaged path 143 1: binary nothing foo.png 144 2: +403/-35 +1/-1 git-add--interactive.perl 145------------ 146+ 147It shows that foo.png has differences from HEAD (but that is 148binary so line count cannot be shown) and there is no 149difference between indexed copy and the working tree 150version (if the working tree version were also different, 151'binary' would have been shown in place of 'nothing'). The 152other file, git-add--interactive.perl, has 403 lines added 153and 35 lines deleted if you commit what is in the index, but 154working tree file has further modifications (one addition and 155one deletion). 156 157update:: 158 159 This shows the status information and gives prompt 160 "Update>>". When the prompt ends with double '>>', you can 161 make more than one selection, concatenated with whitespace or 162 comma. Also you can say ranges. E.g. "2-5 7,9" to choose 163 2,3,4,5,7,9 from the list. You can say '*' to choose 164 everything. 165+ 166What you chose are then highlighted with '*', 167like this: 168+ 169------------ 170 staged unstaged path 171 1: binary nothing foo.png 172* 2: +403/-35 +1/-1 git-add--interactive.perl 173------------ 174+ 175To remove selection, prefix the input with `-` 176like this: 177+ 178------------ 179Update>> -2 180------------ 181+ 182After making the selection, answer with an empty line to stage the 183contents of working tree files for selected paths in the index. 184 185revert:: 186 187 This has a very similar UI to 'update', and the staged 188 information for selected paths are reverted to that of the 189 HEAD version. Reverting new paths makes them untracked. 190 191add untracked:: 192 193 This has a very similar UI to 'update' and 194 'revert', and lets you add untracked paths to the index. 195 196patch:: 197 198 This lets you choose one path out of 'status' like selection. 199 After choosing the path, it presents diff between the index 200 and the working tree file and asks you if you want to stage 201 the change of each hunk. You can say: 202 203 y - add the change from that hunk to index 204 n - do not add the change from that hunk to index 205 a - add the change from that hunk and all the rest to index 206 d - do not the change from that hunk nor any of the rest to index 207 j - do not decide on this hunk now, and view the next 208 undecided hunk 209 J - do not decide on this hunk now, and view the next hunk 210 k - do not decide on this hunk now, and view the previous 211 undecided hunk 212 K - do not decide on this hunk now, and view the previous hunk 213+ 214After deciding the fate for all hunks, if there is any hunk 215that was chosen, the index is updated with the selected hunks. 216 217diff:: 218 219 This lets you review what will be committed (i.e. between 220 HEAD and index). 221 222 223See Also 224-------- 225gitlink:git-status[1] 226gitlink:git-rm[1] 227gitlink:git-mv[1] 228gitlink:git-commit[1] 229gitlink:git-update-index[1] 230 231Author 232------ 233Written by Linus Torvalds <torvalds@osdl.org> 234 235Documentation 236-------------- 237Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>. 238 239GIT 240--- 241Part of the gitlink:git[7] suite