Junio C Hamano | 215a7ad | 2005-09-07 17:26:23 -0700 | [diff] [blame] | 1 | git-add(1) |
| 2 | ========== |
Junio C Hamano | 7fc9d69 | 2005-08-23 01:49:47 -0700 | [diff] [blame] | 3 | |
| 4 | NAME |
| 5 | ---- |
J. Bruce Fields | 5f42ac9 | 2007-08-05 19:16:09 -0400 | [diff] [blame] | 6 | git-add - Add file contents to the index |
Junio C Hamano | 7fc9d69 | 2005-08-23 01:49:47 -0700 | [diff] [blame] | 7 | |
| 8 | SYNOPSIS |
| 9 | -------- |
Brian Hetro | 480611d | 2007-08-25 23:20:06 -0400 | [diff] [blame] | 10 | [verse] |
Jonathan Nieder | b1889c3 | 2008-06-30 01:09:04 -0500 | [diff] [blame] | 11 | 'git add' [-n] [-v] [--force | -f] [--interactive | -i] [--patch | -p] |
Johannes Schindelin | c59cb03 | 2009-04-08 23:30:24 +0200 | [diff] [blame] | 12 | [--edit | -e] [--all | [--update | -u]] [--intent-to-add | -N] |
Ævar Arnfjörð Bjarmason | f0e5a4b | 2010-07-17 15:33:15 +0000 | [diff] [blame] | 13 | [--refresh] [--ignore-errors] [--ignore-missing] [--] |
| 14 | [<filepattern>...] |
Junio C Hamano | 7fc9d69 | 2005-08-23 01:49:47 -0700 | [diff] [blame] | 15 | |
| 16 | DESCRIPTION |
| 17 | ----------- |
Björn Gustavsson | 968d707 | 2009-12-07 09:20:09 +0100 | [diff] [blame] | 18 | This command updates the index using the current content found in |
| 19 | the working tree, to prepare the content staged for the next commit. |
| 20 | It typically adds the current content of existing paths as a whole, |
| 21 | but with some options it can also be used to add content with |
| 22 | only part of the changes made to the working tree files applied, or |
| 23 | remove paths that do not exist in the working tree anymore. |
Junio C Hamano | 810bf1f | 2005-11-04 00:04:17 -0800 | [diff] [blame] | 24 | |
J. Bruce Fields | 5f42ac9 | 2007-08-05 19:16:09 -0400 | [diff] [blame] | 25 | The "index" holds a snapshot of the content of the working tree, and it |
| 26 | is this snapshot that is taken as the contents of the next commit. Thus |
| 27 | after making any changes to the working directory, and before running |
Björn Gustavsson | 441947f | 2009-12-07 19:26:57 +0100 | [diff] [blame] | 28 | the commit command, you must use the `add` command to add any new or |
J. Bruce Fields | 5f42ac9 | 2007-08-05 19:16:09 -0400 | [diff] [blame] | 29 | modified files to the index. |
Nicolas Pitre | 366bfcb | 2006-12-04 11:13:39 -0500 | [diff] [blame] | 30 | |
J. Bruce Fields | 5f42ac9 | 2007-08-05 19:16:09 -0400 | [diff] [blame] | 31 | This command can be performed multiple times before a commit. It only |
| 32 | adds the content of the specified file(s) at the time the add command is |
| 33 | run; if you want subsequent changes included in the next commit, then |
Björn Gustavsson | 441947f | 2009-12-07 19:26:57 +0100 | [diff] [blame] | 34 | you must run `git add` again to add the new content to the index. |
Nicolas Pitre | 366bfcb | 2006-12-04 11:13:39 -0500 | [diff] [blame] | 35 | |
Björn Gustavsson | 441947f | 2009-12-07 19:26:57 +0100 | [diff] [blame] | 36 | The `git status` command can be used to obtain a summary of which |
J. Bruce Fields | 5f42ac9 | 2007-08-05 19:16:09 -0400 | [diff] [blame] | 37 | files have changes that are staged for the next commit. |
| 38 | |
Björn Gustavsson | 441947f | 2009-12-07 19:26:57 +0100 | [diff] [blame] | 39 | The `git add` command will not add ignored files by default. If any |
| 40 | ignored files were explicitly specified on the command line, `git add` |
Brian Downing | d1d028e | 2007-08-16 17:56:08 -0500 | [diff] [blame] | 41 | will fail with a list of ignored files. Ignored files reached by |
Petr Baudis | 9d5fc59 | 2007-08-29 00:41:28 +0200 | [diff] [blame] | 42 | directory recursion or filename globbing performed by Git (quote your |
Thomas Rast | ca76828 | 2010-01-07 17:49:12 +0100 | [diff] [blame] | 43 | globs before the shell) will be silently ignored. The 'git add' command can |
Petr Baudis | 9d5fc59 | 2007-08-29 00:41:28 +0200 | [diff] [blame] | 44 | be used to add ignored files with the `-f` (force) option. |
Junio C Hamano | 7fc9d69 | 2005-08-23 01:49:47 -0700 | [diff] [blame] | 45 | |
Dan McGee | 5162e69 | 2007-12-29 00:20:38 -0600 | [diff] [blame] | 46 | Please see linkgit:git-commit[1] for alternative ways to add content to a |
Nicolas Pitre | 366bfcb | 2006-12-04 11:13:39 -0500 | [diff] [blame] | 47 | commit. |
| 48 | |
| 49 | |
Junio C Hamano | 7fc9d69 | 2005-08-23 01:49:47 -0700 | [diff] [blame] | 50 | OPTIONS |
| 51 | ------- |
Brian Hetro | 480611d | 2007-08-25 23:20:06 -0400 | [diff] [blame] | 52 | <filepattern>...:: |
Junio C Hamano | e23ca9e | 2006-12-25 03:13:45 -0800 | [diff] [blame] | 53 | Files to add content from. Fileglobs (e.g. `*.c`) can |
| 54 | be given to add all matching files. Also a |
| 55 | leading directory name (e.g. `dir` to add `dir/file1` |
| 56 | and `dir/file2`) can be given to add all files in the |
| 57 | directory, recursively. |
Junio C Hamano | 7fc9d69 | 2005-08-23 01:49:47 -0700 | [diff] [blame] | 58 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 59 | -n:: |
| 60 | --dry-run:: |
Jens Lehmann | 108da0d | 2010-07-10 00:18:38 +0200 | [diff] [blame] | 61 | Don't actually add the file(s), just show if they exist and/or will |
| 62 | be ignored. |
Chris Shoemaker | 918db54 | 2005-10-29 17:46:41 -0400 | [diff] [blame] | 63 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 64 | -v:: |
| 65 | --verbose:: |
Chris Shoemaker | 918db54 | 2005-10-29 17:46:41 -0400 | [diff] [blame] | 66 | Be verbose. |
| 67 | |
Junio C Hamano | 6a1ad32 | 2006-12-25 17:46:38 -0800 | [diff] [blame] | 68 | -f:: |
SZEDER Gábor | 69c61c4 | 2008-06-14 11:48:00 +0200 | [diff] [blame] | 69 | --force:: |
Junio C Hamano | 6a1ad32 | 2006-12-25 17:46:38 -0800 | [diff] [blame] | 70 | Allow adding otherwise ignored files. |
| 71 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 72 | -i:: |
| 73 | --interactive:: |
Junio C Hamano | 6a5ad23 | 2006-12-25 01:30:55 -0800 | [diff] [blame] | 74 | Add modified contents in the working tree interactively to |
Wincent Colaiuta | b63e995 | 2007-11-25 14:15:42 +0100 | [diff] [blame] | 75 | the index. Optional path arguments may be supplied to limit |
| 76 | operation to a subset of the working tree. See ``Interactive |
| 77 | mode'' for details. |
| 78 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 79 | -p:: |
| 80 | --patch:: |
Jari Aalto | 5f2b1e6 | 2009-09-13 09:43:10 +0300 | [diff] [blame] | 81 | Interactively choose hunks of patch between the index and the |
| 82 | work tree and add them to the index. This gives the user a chance |
| 83 | to review the difference before adding modified contents to the |
| 84 | index. |
Stephen Boyd | 46ada61 | 2009-11-13 17:45:46 -0800 | [diff] [blame] | 85 | + |
| 86 | This effectively runs `add --interactive`, but bypasses the |
| 87 | initial command menu and directly jumps to the `patch` subcommand. |
| 88 | See ``Interactive mode'' for details. |
Junio C Hamano | 6a5ad23 | 2006-12-25 01:30:55 -0800 | [diff] [blame] | 89 | |
Johannes Schindelin | c59cb03 | 2009-04-08 23:30:24 +0200 | [diff] [blame] | 90 | -e, \--edit:: |
| 91 | Open the diff vs. the index in an editor and let the user |
| 92 | edit it. After the editor was closed, adjust the hunk headers |
| 93 | and apply the patch to the index. |
| 94 | + |
Jeff King | 5df4d67 | 2010-10-21 10:30:35 -0400 | [diff] [blame] | 95 | The intent of this option is to pick and choose lines of the patch to |
Jeff King | 0fe802d | 2010-11-08 23:58:20 -0500 | [diff] [blame] | 96 | apply, or even to modify the contents of lines to be staged. This can be |
| 97 | quicker and more flexible than using the interactive hunk selector. |
| 98 | However, it is easy to confuse oneself and create a patch that does not |
| 99 | apply to the index. See EDITING PATCHES below. |
Johannes Schindelin | c59cb03 | 2009-04-08 23:30:24 +0200 | [diff] [blame] | 100 | |
Matthieu Moy | bc3561f | 2007-05-06 23:11:55 +0200 | [diff] [blame] | 101 | -u:: |
SZEDER Gábor | 69c61c4 | 2008-06-14 11:48:00 +0200 | [diff] [blame] | 102 | --update:: |
Björn Gustavsson | 968d707 | 2009-12-07 09:20:09 +0100 | [diff] [blame] | 103 | Only match <filepattern> against already tracked files in |
| 104 | the index rather than the working tree. That means that it |
| 105 | will never stage new files, but that it will stage modified |
| 106 | new contents of tracked files and that it will remove files |
| 107 | from the index if the corresponding files in the working tree |
| 108 | have been removed. |
| 109 | + |
| 110 | If no <filepattern> is given, default to "."; in other words, |
| 111 | update all tracked files in the current directory and its |
| 112 | subdirectories. |
Matthieu Moy | bc3561f | 2007-05-06 23:11:55 +0200 | [diff] [blame] | 113 | |
Junio C Hamano | da98053 | 2008-07-19 22:34:16 -0700 | [diff] [blame] | 114 | -A:: |
| 115 | --all:: |
Björn Gustavsson | 968d707 | 2009-12-07 09:20:09 +0100 | [diff] [blame] | 116 | Like `-u`, but match <filepattern> against files in the |
| 117 | working tree in addition to the index. That means that it |
| 118 | will find new files as well as staging modified content and |
| 119 | removing files that are no longer in the working tree. |
Jeff King | 8776f5d | 2008-10-20 20:36:25 -0400 | [diff] [blame] | 120 | |
| 121 | -N:: |
| 122 | --intent-to-add:: |
| 123 | Record only the fact that the path will be added later. An entry |
| 124 | for the path is placed in the index with no content. This is |
| 125 | useful for, among other things, showing the unstaged content of |
Björn Gustavsson | 441947f | 2009-12-07 19:26:57 +0100 | [diff] [blame] | 126 | such files with `git diff` and committing them with `git commit |
| 127 | -a`. |
Jeff King | 8776f5d | 2008-10-20 20:36:25 -0400 | [diff] [blame] | 128 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 129 | --refresh:: |
Alexandre Julliard | d616813 | 2007-08-11 23:59:01 +0200 | [diff] [blame] | 130 | Don't add the file(s), but only refresh their stat() |
| 131 | information in the index. |
| 132 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 133 | --ignore-errors:: |
Alex Riesen | 984b83e | 2008-05-12 19:58:29 +0200 | [diff] [blame] | 134 | If some files could not be added because of errors indexing |
| 135 | them, do not abort the operation, but continue adding the |
| 136 | others. The command shall still exit with non-zero status. |
| 137 | |
Jens Lehmann | 108da0d | 2010-07-10 00:18:38 +0200 | [diff] [blame] | 138 | --ignore-missing:: |
| 139 | This option can only be used together with --dry-run. By using |
| 140 | this option the user can check if any of the given files would |
| 141 | be ignored, no matter if they are already present in the work |
| 142 | tree or not. |
| 143 | |
sean | e994004 | 2006-05-05 15:05:24 -0400 | [diff] [blame] | 144 | \--:: |
Carl Worth | 60ace87 | 2006-02-21 15:33:49 -0800 | [diff] [blame] | 145 | This option can be used to separate command-line options from |
| 146 | the list of files, (useful when filenames might be mistaken |
| 147 | for command-line options). |
| 148 | |
Chris Shoemaker | 918db54 | 2005-10-29 17:46:41 -0400 | [diff] [blame] | 149 | |
Michael Hendricks | 164b198 | 2007-05-16 23:08:50 -0600 | [diff] [blame] | 150 | Configuration |
| 151 | ------------- |
| 152 | |
Björn Gustavsson | 441947f | 2009-12-07 19:26:57 +0100 | [diff] [blame] | 153 | The optional configuration variable `core.excludesfile` indicates a path to a |
Michael Hendricks | 164b198 | 2007-05-16 23:08:50 -0600 | [diff] [blame] | 154 | file containing patterns of file names to exclude from git-add, similar to |
| 155 | $GIT_DIR/info/exclude. Patterns in the exclude file are used in addition to |
Jonathan Nieder | 6998e4d | 2008-06-30 17:01:21 -0500 | [diff] [blame] | 156 | those in info/exclude. See linkgit:gitrepository-layout[5]. |
Michael Hendricks | 164b198 | 2007-05-16 23:08:50 -0600 | [diff] [blame] | 157 | |
| 158 | |
Junio C Hamano | 810bf1f | 2005-11-04 00:04:17 -0800 | [diff] [blame] | 159 | EXAMPLES |
| 160 | -------- |
Junio C Hamano | 810bf1f | 2005-11-04 00:04:17 -0800 | [diff] [blame] | 161 | |
Jonathan Nieder | 1b6c6cf | 2010-08-20 05:26:13 -0500 | [diff] [blame] | 162 | * Adds content from all `*.txt` files under `Documentation` directory |
Christian Couder | 921177f | 2008-05-07 06:29:28 +0200 | [diff] [blame] | 163 | and its subdirectories: |
| 164 | + |
| 165 | ------------ |
Junio C Hamano | bf7cbb2 | 2010-02-08 12:12:41 -0800 | [diff] [blame] | 166 | $ git add Documentation/\*.txt |
Christian Couder | 921177f | 2008-05-07 06:29:28 +0200 | [diff] [blame] | 167 | ------------ |
Junio C Hamano | 810bf1f | 2005-11-04 00:04:17 -0800 | [diff] [blame] | 168 | + |
Jonathan Nieder | 1b6c6cf | 2010-08-20 05:26:13 -0500 | [diff] [blame] | 169 | Note that the asterisk `*` is quoted from the shell in this |
David J. Mellor | dcc901b | 2009-02-28 13:12:59 -0800 | [diff] [blame] | 170 | example; this lets the command include the files from |
Junio C Hamano | 810bf1f | 2005-11-04 00:04:17 -0800 | [diff] [blame] | 171 | subdirectories of `Documentation/` directory. |
| 172 | |
Christian Couder | 921177f | 2008-05-07 06:29:28 +0200 | [diff] [blame] | 173 | * Considers adding content from all git-*.sh scripts: |
| 174 | + |
| 175 | ------------ |
| 176 | $ git add git-*.sh |
| 177 | ------------ |
| 178 | + |
David J. Mellor | dcc901b | 2009-02-28 13:12:59 -0800 | [diff] [blame] | 179 | Because this example lets the shell expand the asterisk (i.e. you are |
Christian Couder | 921177f | 2008-05-07 06:29:28 +0200 | [diff] [blame] | 180 | listing the files explicitly), it does not consider |
| 181 | `subdir/git-foo.sh`. |
Junio C Hamano | 810bf1f | 2005-11-04 00:04:17 -0800 | [diff] [blame] | 182 | |
Junio C Hamano | 6a5ad23 | 2006-12-25 01:30:55 -0800 | [diff] [blame] | 183 | Interactive mode |
| 184 | ---------------- |
| 185 | When the command enters the interactive mode, it shows the |
René Scharfe | 23bfbb8 | 2007-01-17 16:32:41 +0100 | [diff] [blame] | 186 | output of the 'status' subcommand, and then goes into its |
Junio C Hamano | 6a5ad23 | 2006-12-25 01:30:55 -0800 | [diff] [blame] | 187 | interactive command loop. |
| 188 | |
| 189 | The command loop shows the list of subcommands available, and |
| 190 | gives a prompt "What now> ". In general, when the prompt ends |
| 191 | with a single '>', you can pick only one of the choices given |
| 192 | and type return, like this: |
| 193 | |
| 194 | ------------ |
| 195 | *** Commands *** |
| 196 | 1: status 2: update 3: revert 4: add untracked |
| 197 | 5: patch 6: diff 7: quit 8: help |
| 198 | What now> 1 |
| 199 | ------------ |
| 200 | |
Björn Gustavsson | 441947f | 2009-12-07 19:26:57 +0100 | [diff] [blame] | 201 | You also could say `s` or `sta` or `status` above as long as the |
Junio C Hamano | 6a5ad23 | 2006-12-25 01:30:55 -0800 | [diff] [blame] | 202 | choice is unique. |
| 203 | |
| 204 | The main command loop has 6 subcommands (plus help and quit). |
| 205 | |
| 206 | status:: |
| 207 | |
| 208 | This shows the change between HEAD and index (i.e. what will be |
Björn Gustavsson | 441947f | 2009-12-07 19:26:57 +0100 | [diff] [blame] | 209 | committed if you say `git commit`), and between index and |
Junio C Hamano | 6a5ad23 | 2006-12-25 01:30:55 -0800 | [diff] [blame] | 210 | working tree files (i.e. what you could stage further before |
Björn Gustavsson | 441947f | 2009-12-07 19:26:57 +0100 | [diff] [blame] | 211 | `git commit` using `git add`) for each path. A sample output |
Junio C Hamano | 6a5ad23 | 2006-12-25 01:30:55 -0800 | [diff] [blame] | 212 | looks like this: |
| 213 | + |
| 214 | ------------ |
| 215 | staged unstaged path |
| 216 | 1: binary nothing foo.png |
| 217 | 2: +403/-35 +1/-1 git-add--interactive.perl |
| 218 | ------------ |
| 219 | + |
| 220 | It shows that foo.png has differences from HEAD (but that is |
| 221 | binary so line count cannot be shown) and there is no |
| 222 | difference between indexed copy and the working tree |
| 223 | version (if the working tree version were also different, |
| 224 | 'binary' would have been shown in place of 'nothing'). The |
Junio C Hamano | 2839478 | 2010-08-23 14:20:25 -0700 | [diff] [blame] | 225 | other file, git-add{litdd}interactive.perl, has 403 lines added |
Junio C Hamano | 6a5ad23 | 2006-12-25 01:30:55 -0800 | [diff] [blame] | 226 | and 35 lines deleted if you commit what is in the index, but |
| 227 | working tree file has further modifications (one addition and |
| 228 | one deletion). |
| 229 | |
| 230 | update:: |
| 231 | |
David J. Mellor | dcc901b | 2009-02-28 13:12:59 -0800 | [diff] [blame] | 232 | This shows the status information and issues an "Update>>" |
| 233 | prompt. When the prompt ends with double '>>', you can |
Junio C Hamano | 6a5ad23 | 2006-12-25 01:30:55 -0800 | [diff] [blame] | 234 | make more than one selection, concatenated with whitespace or |
| 235 | comma. Also you can say ranges. E.g. "2-5 7,9" to choose |
Ciaran McCreesh | 1e5aaa6 | 2008-07-14 19:29:37 +0100 | [diff] [blame] | 236 | 2,3,4,5,7,9 from the list. If the second number in a range is |
| 237 | omitted, all remaining patches are taken. E.g. "7-" to choose |
| 238 | 7,8,9 from the list. You can say '*' to choose everything. |
Junio C Hamano | 6a5ad23 | 2006-12-25 01:30:55 -0800 | [diff] [blame] | 239 | + |
| 240 | What you chose are then highlighted with '*', |
| 241 | like this: |
| 242 | + |
| 243 | ------------ |
| 244 | staged unstaged path |
| 245 | 1: binary nothing foo.png |
| 246 | * 2: +403/-35 +1/-1 git-add--interactive.perl |
| 247 | ------------ |
| 248 | + |
| 249 | To remove selection, prefix the input with `-` |
| 250 | like this: |
| 251 | + |
| 252 | ------------ |
| 253 | Update>> -2 |
| 254 | ------------ |
| 255 | + |
| 256 | After making the selection, answer with an empty line to stage the |
| 257 | contents of working tree files for selected paths in the index. |
| 258 | |
| 259 | revert:: |
| 260 | |
| 261 | This has a very similar UI to 'update', and the staged |
| 262 | information for selected paths are reverted to that of the |
| 263 | HEAD version. Reverting new paths makes them untracked. |
| 264 | |
| 265 | add untracked:: |
| 266 | |
| 267 | This has a very similar UI to 'update' and |
| 268 | 'revert', and lets you add untracked paths to the index. |
| 269 | |
| 270 | patch:: |
| 271 | |
David J. Mellor | dcc901b | 2009-02-28 13:12:59 -0800 | [diff] [blame] | 272 | This lets you choose one path out of a 'status' like selection. |
| 273 | After choosing the path, it presents the diff between the index |
Junio C Hamano | 6a5ad23 | 2006-12-25 01:30:55 -0800 | [diff] [blame] | 274 | and the working tree file and asks you if you want to stage |
| 275 | the change of each hunk. You can say: |
| 276 | |
Vineet Kumar | bb12ac5 | 2008-03-13 11:32:16 -0700 | [diff] [blame] | 277 | y - stage this hunk |
| 278 | n - do not stage this hunk |
Jonathan Nieder | 74e42ce | 2010-06-12 22:32:51 -0500 | [diff] [blame] | 279 | q - quit; do not stage this hunk nor any of the remaining ones |
| 280 | a - stage this hunk and all later hunks in the file |
| 281 | d - do not stage this hunk nor any of the later hunks in the file |
Matthieu Moy | 595f694 | 2009-04-16 18:46:23 +0200 | [diff] [blame] | 282 | g - select a hunk to go to |
| 283 | / - search for a hunk matching the given regex |
Vineet Kumar | bb12ac5 | 2008-03-13 11:32:16 -0700 | [diff] [blame] | 284 | j - leave this hunk undecided, see next undecided hunk |
| 285 | J - leave this hunk undecided, see next hunk |
| 286 | k - leave this hunk undecided, see previous undecided hunk |
| 287 | K - leave this hunk undecided, see previous hunk |
Ralf Wildenhues | 280e50c | 2007-11-28 19:21:42 +0100 | [diff] [blame] | 288 | s - split the current hunk into smaller hunks |
Thomas Rast | ac083c4 | 2008-07-03 00:00:00 +0200 | [diff] [blame] | 289 | e - manually edit the current hunk |
Ralf Wildenhues | 280e50c | 2007-11-28 19:21:42 +0100 | [diff] [blame] | 290 | ? - print help |
Junio C Hamano | 6a5ad23 | 2006-12-25 01:30:55 -0800 | [diff] [blame] | 291 | + |
| 292 | After deciding the fate for all hunks, if there is any hunk |
| 293 | that was chosen, the index is updated with the selected hunks. |
| 294 | |
| 295 | diff:: |
| 296 | |
| 297 | This lets you review what will be committed (i.e. between |
| 298 | HEAD and index). |
| 299 | |
Jeff King | 0fe802d | 2010-11-08 23:58:20 -0500 | [diff] [blame] | 300 | |
| 301 | EDITING PATCHES |
| 302 | --------------- |
| 303 | |
| 304 | Invoking `git add -e` or selecting `e` from the interactive hunk |
| 305 | selector will open a patch in your editor; after the editor exits, the |
| 306 | result is applied to the index. You are free to make arbitrary changes |
| 307 | to the patch, but note that some changes may have confusing results, or |
| 308 | even result in a patch that cannot be applied. If you want to abort the |
| 309 | operation entirely (i.e., stage nothing new in the index), simply delete |
| 310 | all lines of the patch. The list below describes some common things you |
| 311 | may see in a patch, and which editing operations make sense on them. |
| 312 | |
| 313 | -- |
| 314 | added content:: |
| 315 | |
| 316 | Added content is represented by lines beginning with "{plus}". You can |
| 317 | prevent staging any addition lines by deleting them. |
| 318 | |
| 319 | removed content:: |
| 320 | |
| 321 | Removed content is represented by lines beginning with "-". You can |
| 322 | prevent staging their removal by converting the "-" to a " " (space). |
| 323 | |
| 324 | modified content:: |
| 325 | |
| 326 | Modified content is represented by "-" lines (removing the old content) |
| 327 | followed by "{plus}" lines (adding the replacement content). You can |
| 328 | prevent staging the modification by converting "-" lines to " ", and |
| 329 | removing "{plus}" lines. Beware that modifying only half of the pair is |
| 330 | likely to introduce confusing changes to the index. |
| 331 | -- |
| 332 | |
| 333 | There are also more complex operations that can be performed. But beware |
| 334 | that because the patch is applied only to the index and not the working |
| 335 | tree, the working tree will appear to "undo" the change in the index. |
Ralf Wildenhues | 469bfc9 | 2011-01-03 20:03:34 +0100 | [diff] [blame] | 336 | For example, introducing a new line into the index that is in neither |
Jeff King | 0fe802d | 2010-11-08 23:58:20 -0500 | [diff] [blame] | 337 | the HEAD nor the working tree will stage the new line for commit, but |
| 338 | the line will appear to be reverted in the working tree. |
| 339 | |
| 340 | Avoid using these constructs, or do so with extreme caution. |
| 341 | |
| 342 | -- |
| 343 | removing untouched content:: |
| 344 | |
| 345 | Content which does not differ between the index and working tree may be |
| 346 | shown on context lines, beginning with a " " (space). You can stage |
| 347 | context lines for removal by converting the space to a "-". The |
| 348 | resulting working tree file will appear to re-add the content. |
| 349 | |
| 350 | modifying existing content:: |
| 351 | |
| 352 | One can also modify context lines by staging them for removal (by |
| 353 | converting " " to "-") and adding a "{plus}" line with the new content. |
| 354 | Similarly, one can modify "{plus}" lines for existing additions or |
| 355 | modifications. In all cases, the new modification will appear reverted |
| 356 | in the working tree. |
| 357 | |
| 358 | new content:: |
| 359 | |
| 360 | You may also add new content that does not exist in the patch; simply |
| 361 | add new lines, each starting with "{plus}". The addition will appear |
| 362 | reverted in the working tree. |
| 363 | -- |
| 364 | |
| 365 | There are also several operations which should be avoided entirely, as |
| 366 | they will make the patch impossible to apply: |
| 367 | |
| 368 | * adding context (" ") or removal ("-") lines |
| 369 | * deleting context or removal lines |
| 370 | * modifying the contents of context or removal lines |
| 371 | |
Junio C Hamano | 56ae8df | 2008-05-28 16:55:27 -0700 | [diff] [blame] | 372 | SEE ALSO |
Jeff Muizelaar | 872d001 | 2006-03-05 16:18:19 -0500 | [diff] [blame] | 373 | -------- |
Dan McGee | 5162e69 | 2007-12-29 00:20:38 -0600 | [diff] [blame] | 374 | linkgit:git-status[1] |
| 375 | linkgit:git-rm[1] |
| 376 | linkgit:git-reset[1] |
| 377 | linkgit:git-mv[1] |
| 378 | linkgit:git-commit[1] |
| 379 | linkgit:git-update-index[1] |
Junio C Hamano | 810bf1f | 2005-11-04 00:04:17 -0800 | [diff] [blame] | 380 | |
Junio C Hamano | 7fc9d69 | 2005-08-23 01:49:47 -0700 | [diff] [blame] | 381 | Author |
| 382 | ------ |
| 383 | Written by Linus Torvalds <torvalds@osdl.org> |
| 384 | |
| 385 | Documentation |
| 386 | -------------- |
| 387 | Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>. |
| 388 | |
| 389 | GIT |
| 390 | --- |
Christian Couder | 9e1f0a8 | 2008-06-06 09:07:32 +0200 | [diff] [blame] | 391 | Part of the linkgit:git[1] suite |