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 | e8acc8e | 2015-01-14 22:01:34 | [diff] [blame] | 11 | 'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p] |
Junio C Hamano | 7b1585b | 2021-10-14 17:11:58 | [diff] [blame] | 12 | [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] [--sparse] |
Junio C Hamano | 4886c77 | 2017-11-27 03:33:28 | [diff] [blame] | 13 | [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize] |
Junio C Hamano | 2f5a989 | 2019-12-25 21:12:55 | [diff] [blame] | 14 | [--chmod=(+|-)x] [--pathspec-from-file=<file> [--pathspec-file-nul]] |
| 15 | [--] [<pathspec>...] |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 16 | |
| 17 | DESCRIPTION |
| 18 | ----------- |
Junio C Hamano | ae05fee | 2010-01-08 07:39:46 | [diff] [blame] | 19 | This command updates the index using the current content found in |
| 20 | the working tree, to prepare the content staged for the next commit. |
| 21 | It typically adds the current content of existing paths as a whole, |
| 22 | but with some options it can also be used to add content with |
| 23 | only part of the changes made to the working tree files applied, or |
| 24 | remove paths that do not exist in the working tree anymore. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 25 | |
Junio C Hamano | 4cd1c0e | 2007-08-06 04:39:14 | [diff] [blame] | 26 | The "index" holds a snapshot of the content of the working tree, and it |
| 27 | is this snapshot that is taken as the contents of the next commit. Thus |
Junio C Hamano | ffe10ca | 2016-02-04 00:44:23 | [diff] [blame] | 28 | after making any changes to the working tree, and before running |
Junio C Hamano | ae05fee | 2010-01-08 07:39:46 | [diff] [blame] | 29 | the commit command, you must use the `add` command to add any new or |
Junio C Hamano | 4cd1c0e | 2007-08-06 04:39:14 | [diff] [blame] | 30 | modified files to the index. |
Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 31 | |
Junio C Hamano | 4cd1c0e | 2007-08-06 04:39:14 | [diff] [blame] | 32 | This command can be performed multiple times before a commit. It only |
| 33 | adds the content of the specified file(s) at the time the add command is |
| 34 | run; if you want subsequent changes included in the next commit, then |
Junio C Hamano | ae05fee | 2010-01-08 07:39:46 | [diff] [blame] | 35 | 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] | 36 | |
Junio C Hamano | ae05fee | 2010-01-08 07:39:46 | [diff] [blame] | 37 | The `git status` command can be used to obtain a summary of which |
Junio C Hamano | 4cd1c0e | 2007-08-06 04:39:14 | [diff] [blame] | 38 | files have changes that are staged for the next commit. |
| 39 | |
Junio C Hamano | ae05fee | 2010-01-08 07:39:46 | [diff] [blame] | 40 | The `git add` command will not add ignored files by default. If any |
| 41 | ignored files were explicitly specified on the command line, `git add` |
Junio C Hamano | 3c1f2c7 | 2007-08-17 07:48:05 | [diff] [blame] | 42 | will fail with a list of ignored files. Ignored files reached by |
Junio C Hamano | 7d9e9bd | 2007-08-29 07:31:47 | [diff] [blame] | 43 | directory recursion or filename globbing performed by Git (quote your |
Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 44 | globs before the shell) will be silently ignored. The 'git add' command can |
Junio C Hamano | 7d9e9bd | 2007-08-29 07:31:47 | [diff] [blame] | 45 | be used to add ignored files with the `-f` (force) option. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 46 | |
Junio C Hamano | 35738e8 | 2008-01-07 07:55:46 | [diff] [blame] | 47 | 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] | 48 | commit. |
| 49 | |
| 50 | |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 51 | OPTIONS |
| 52 | ------- |
Junio C Hamano | bca4cd6 | 2013-02-13 00:01:02 | [diff] [blame] | 53 | <pathspec>...:: |
Junio C Hamano | 3d2adc7 | 2006-12-26 03:21:45 | [diff] [blame] | 54 | Files to add content from. Fileglobs (e.g. `*.c`) can |
| 55 | be given to add all matching files. Also a |
| 56 | leading directory name (e.g. `dir` to add `dir/file1` |
Junio C Hamano | 1d669b8 | 2014-03-11 21:36:00 | [diff] [blame] | 57 | and `dir/file2`) can be given to update the index to |
| 58 | match the current state of the directory as a whole (e.g. |
| 59 | specifying `dir` will record not just a file `dir/file1` |
| 60 | modified in the working tree, a file `dir/file2` added to |
| 61 | the working tree, but also a file `dir/file3` removed from |
Junio C Hamano | 2567b32 | 2019-02-05 23:33:56 | [diff] [blame] | 62 | the working tree). Note that older versions of Git used |
Junio C Hamano | 1d669b8 | 2014-03-11 21:36:00 | [diff] [blame] | 63 | to ignore removed files; use `--no-all` option if you want |
Junio C Hamano | 2567b32 | 2019-02-05 23:33:56 | [diff] [blame] | 64 | to add modified or new files but ignore removed ones. |
Junio C Hamano | 139b7d1 | 2017-10-03 07:10:59 | [diff] [blame] | 65 | + |
| 66 | For more details about the <pathspec> syntax, see the 'pathspec' entry |
| 67 | in linkgit:gitglossary[7]. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 68 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 69 | -n:: |
| 70 | --dry-run:: |
Junio C Hamano | afabd32 | 2010-07-19 20:26:15 | [diff] [blame] | 71 | Don't actually add the file(s), just show if they exist and/or will |
| 72 | be ignored. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 73 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 74 | -v:: |
| 75 | --verbose:: |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 76 | Be verbose. |
| 77 | |
Junio C Hamano | 3d2adc7 | 2006-12-26 03:21:45 | [diff] [blame] | 78 | -f:: |
Junio C Hamano | 00e884a | 2008-06-15 05:10:38 | [diff] [blame] | 79 | --force:: |
Junio C Hamano | 3d2adc7 | 2006-12-26 03:21:45 | [diff] [blame] | 80 | Allow adding otherwise ignored files. |
| 81 | |
Junio C Hamano | 7b1585b | 2021-10-14 17:11:58 | [diff] [blame] | 82 | --sparse:: |
| 83 | Allow updating index entries outside of the sparse-checkout cone. |
| 84 | Normally, `git add` refuses to update index entries whose paths do |
| 85 | not fit within the sparse-checkout cone, since those files might |
| 86 | be removed from the working tree without warning. See |
| 87 | linkgit:git-sparse-checkout[1] for more details. |
| 88 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 89 | -i:: |
| 90 | --interactive:: |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 91 | Add modified contents in the working tree interactively to |
Junio C Hamano | e0facb9 | 2007-12-05 10:59:48 | [diff] [blame] | 92 | the index. Optional path arguments may be supplied to limit |
| 93 | operation to a subset of the working tree. See ``Interactive |
| 94 | mode'' for details. |
| 95 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 96 | -p:: |
| 97 | --patch:: |
Junio C Hamano | 7df6dcf | 2009-09-13 09:51:17 | [diff] [blame] | 98 | Interactively choose hunks of patch between the index and the |
| 99 | work tree and add them to the index. This gives the user a chance |
| 100 | to review the difference before adding modified contents to the |
| 101 | index. |
Junio C Hamano | e1b2683 | 2009-11-15 10:02:56 | [diff] [blame] | 102 | + |
| 103 | This effectively runs `add --interactive`, but bypasses the |
| 104 | initial command menu and directly jumps to the `patch` subcommand. |
| 105 | See ``Interactive mode'' for details. |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 106 | |
Junio C Hamano | 1dbca52 | 2015-05-22 20:48:55 | [diff] [blame] | 107 | -e:: |
| 108 | --edit:: |
Junio C Hamano | 52ba295 | 2009-05-18 17:43:02 | [diff] [blame] | 109 | Open the diff vs. the index in an editor and let the user |
| 110 | edit it. After the editor was closed, adjust the hunk headers |
| 111 | and apply the patch to the index. |
| 112 | + |
Junio C Hamano | 97bcb48 | 2010-11-25 03:16:07 | [diff] [blame] | 113 | The intent of this option is to pick and choose lines of the patch to |
| 114 | apply, or even to modify the contents of lines to be staged. This can be |
| 115 | quicker and more flexible than using the interactive hunk selector. |
| 116 | However, it is easy to confuse oneself and create a patch that does not |
| 117 | apply to the index. See EDITING PATCHES below. |
Junio C Hamano | 52ba295 | 2009-05-18 17:43:02 | [diff] [blame] | 118 | |
Junio C Hamano | 3d30fd5 | 2007-05-08 00:32:53 | [diff] [blame] | 119 | -u:: |
Junio C Hamano | 00e884a | 2008-06-15 05:10:38 | [diff] [blame] | 120 | --update:: |
Junio C Hamano | f66c463 | 2013-03-11 20:54:25 | [diff] [blame] | 121 | Update the index just where it already has an entry matching |
| 122 | <pathspec>. This removes as well as modifies index entries to |
| 123 | match the working tree, but adds no new files. |
Junio C Hamano | ae05fee | 2010-01-08 07:39:46 | [diff] [blame] | 124 | + |
Junio C Hamano | 1d669b8 | 2014-03-11 21:36:00 | [diff] [blame] | 125 | If no <pathspec> is given when `-u` option is used, all |
| 126 | tracked files in the entire working tree are updated (old versions |
| 127 | of Git used to limit the update to the current directory and its |
| 128 | subdirectories). |
Junio C Hamano | 3d30fd5 | 2007-05-08 00:32:53 | [diff] [blame] | 129 | |
Junio C Hamano | 5ba2c22 | 2008-07-21 04:33:46 | [diff] [blame] | 130 | -A:: |
| 131 | --all:: |
Junio C Hamano | f26c77e | 2013-04-27 00:06:04 | [diff] [blame] | 132 | --no-ignore-removal:: |
Junio C Hamano | f66c463 | 2013-03-11 20:54:25 | [diff] [blame] | 133 | Update the index not only where the working tree has a file |
| 134 | matching <pathspec> but also where the index already has an |
Junio C Hamano | 2567b32 | 2019-02-05 23:33:56 | [diff] [blame] | 135 | entry. This adds, modifies, and removes index entries to |
Junio C Hamano | f66c463 | 2013-03-11 20:54:25 | [diff] [blame] | 136 | match the working tree. |
| 137 | + |
Junio C Hamano | 1d669b8 | 2014-03-11 21:36:00 | [diff] [blame] | 138 | If no <pathspec> is given when `-A` option is used, all |
| 139 | files in the entire working tree are updated (old versions |
| 140 | of Git used to limit the update to the current directory and its |
| 141 | subdirectories). |
Junio C Hamano | 845880c | 2008-10-21 19:04:45 | [diff] [blame] | 142 | |
Junio C Hamano | c79bc67 | 2013-04-22 19:12:47 | [diff] [blame] | 143 | --no-all:: |
Junio C Hamano | f26c77e | 2013-04-27 00:06:04 | [diff] [blame] | 144 | --ignore-removal:: |
Junio C Hamano | c79bc67 | 2013-04-22 19:12:47 | [diff] [blame] | 145 | Update the index by adding new files that are unknown to the |
| 146 | index and files modified in the working tree, but ignore |
| 147 | files that have been removed from the working tree. This |
| 148 | option is a no-op when no <pathspec> is used. |
| 149 | + |
Junio C Hamano | 1d669b8 | 2014-03-11 21:36:00 | [diff] [blame] | 150 | This option is primarily to help users who are used to older |
| 151 | versions of Git, whose "git add <pathspec>..." was a synonym |
| 152 | for "git add --no-all <pathspec>...", i.e. ignored removed files. |
Junio C Hamano | c79bc67 | 2013-04-22 19:12:47 | [diff] [blame] | 153 | |
Junio C Hamano | 845880c | 2008-10-21 19:04:45 | [diff] [blame] | 154 | -N:: |
| 155 | --intent-to-add:: |
| 156 | Record only the fact that the path will be added later. An entry |
| 157 | for the path is placed in the index with no content. This is |
| 158 | useful for, among other things, showing the unstaged content of |
Junio C Hamano | ae05fee | 2010-01-08 07:39:46 | [diff] [blame] | 159 | such files with `git diff` and committing them with `git commit |
| 160 | -a`. |
Junio C Hamano | 845880c | 2008-10-21 19:04:45 | [diff] [blame] | 161 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 162 | --refresh:: |
Junio C Hamano | 024b6c6 | 2007-08-14 09:43:08 | [diff] [blame] | 163 | Don't add the file(s), but only refresh their stat() |
| 164 | information in the index. |
| 165 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 166 | --ignore-errors:: |
Junio C Hamano | feeb1be | 2008-05-22 00:53:35 | [diff] [blame] | 167 | If some files could not be added because of errors indexing |
| 168 | them, do not abort the operation, but continue adding the |
| 169 | others. The command shall still exit with non-zero status. |
Junio C Hamano | b77f819 | 2011-05-05 01:30:38 | [diff] [blame] | 170 | The configuration variable `add.ignoreErrors` can be set to |
| 171 | true to make this the default behaviour. |
Junio C Hamano | feeb1be | 2008-05-22 00:53:35 | [diff] [blame] | 172 | |
Junio C Hamano | afabd32 | 2010-07-19 20:26:15 | [diff] [blame] | 173 | --ignore-missing:: |
| 174 | This option can only be used together with --dry-run. By using |
| 175 | this option the user can check if any of the given files would |
| 176 | be ignored, no matter if they are already present in the work |
| 177 | tree or not. |
| 178 | |
Junio C Hamano | 535c65c | 2017-06-24 22:51:58 | [diff] [blame] | 179 | --no-warn-embedded-repo:: |
| 180 | By default, `git add` will warn when adding an embedded |
| 181 | repository to the index without using `git submodule add` to |
| 182 | create an entry in `.gitmodules`. This option will suppress the |
| 183 | warning (e.g., if you are manually performing operations on |
| 184 | submodules). |
| 185 | |
Junio C Hamano | 4886c77 | 2017-11-27 03:33:28 | [diff] [blame] | 186 | --renormalize:: |
| 187 | Apply the "clean" process freshly to all tracked files to |
| 188 | forcibly add them again to the index. This is useful after |
| 189 | changing `core.autocrlf` configuration or the `text` attribute |
| 190 | in order to correct files added with wrong CRLF/LF line endings. |
Junio C Hamano | 04495a1 | 2022-08-18 21:13:08 | [diff] [blame] | 191 | This option implies `-u`. Lone CR characters are untouched, thus |
| 192 | while a CRLF cleans to LF, a CRCRLF sequence is only partially |
| 193 | cleaned to CRLF. |
Junio C Hamano | 4886c77 | 2017-11-27 03:33:28 | [diff] [blame] | 194 | |
Junio C Hamano | 5380048 | 2016-09-21 23:26:43 | [diff] [blame] | 195 | --chmod=(+|-)x:: |
| 196 | Override the executable bit of the added files. The executable |
| 197 | bit is only changed in the index, the files on disk are left |
| 198 | unchanged. |
| 199 | |
Junio C Hamano | 2f5a989 | 2019-12-25 21:12:55 | [diff] [blame] | 200 | --pathspec-from-file=<file>:: |
| 201 | Pathspec is passed in `<file>` instead of commandline args. If |
| 202 | `<file>` is exactly `-` then standard input is used. Pathspec |
| 203 | elements are separated by LF or CR/LF. Pathspec elements can be |
| 204 | quoted as explained for the configuration variable `core.quotePath` |
| 205 | (see linkgit:git-config[1]). See also `--pathspec-file-nul` and |
| 206 | global `--literal-pathspecs`. |
| 207 | |
| 208 | --pathspec-file-nul:: |
| 209 | Only meaningful with `--pathspec-from-file`. Pathspec elements are |
| 210 | separated with NUL character and all other characters are taken |
| 211 | literally (including newlines and quotes). |
| 212 | |
Junio C Hamano | 1bb569e | 2006-05-05 23:14:25 | [diff] [blame] | 213 | \--:: |
Junio C Hamano | 7e9f6b7 | 2006-02-22 10:44:55 | [diff] [blame] | 214 | This option can be used to separate command-line options from |
| 215 | the list of files, (useful when filenames might be mistaken |
| 216 | for command-line options). |
| 217 | |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 218 | |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 219 | EXAMPLES |
| 220 | -------- |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 221 | |
Junio C Hamano | 2db3e75 | 2010-09-03 21:33:06 | [diff] [blame] | 222 | * Adds content from all `*.txt` files under `Documentation` directory |
Junio C Hamano | 2567b32 | 2019-02-05 23:33:56 | [diff] [blame] | 223 | and its subdirectories: |
Junio C Hamano | 6d76d61 | 2008-05-09 05:46:08 | [diff] [blame] | 224 | + |
| 225 | ------------ |
Junio C Hamano | 78b92a8 | 2010-02-09 07:34:13 | [diff] [blame] | 226 | $ git add Documentation/\*.txt |
Junio C Hamano | 6d76d61 | 2008-05-09 05:46:08 | [diff] [blame] | 227 | ------------ |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 228 | + |
Junio C Hamano | 2db3e75 | 2010-09-03 21:33:06 | [diff] [blame] | 229 | Note that the asterisk `*` is quoted from the shell in this |
Junio C Hamano | f8a7922 | 2009-03-01 08:02:50 | [diff] [blame] | 230 | example; this lets the command include the files from |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 231 | subdirectories of `Documentation/` directory. |
| 232 | |
Junio C Hamano | 6d76d61 | 2008-05-09 05:46:08 | [diff] [blame] | 233 | * Considers adding content from all git-*.sh scripts: |
| 234 | + |
| 235 | ------------ |
| 236 | $ git add git-*.sh |
| 237 | ------------ |
| 238 | + |
Junio C Hamano | f8a7922 | 2009-03-01 08:02:50 | [diff] [blame] | 239 | 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] | 240 | listing the files explicitly), it does not consider |
| 241 | `subdir/git-foo.sh`. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 242 | |
Junio C Hamano | b9d9d90 | 2018-05-23 07:07:42 | [diff] [blame] | 243 | INTERACTIVE MODE |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 244 | ---------------- |
| 245 | When the command enters the interactive mode, it shows the |
Junio C Hamano | f9771f6 | 2007-01-17 17:42:30 | [diff] [blame] | 246 | output of the 'status' subcommand, and then goes into its |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 247 | interactive command loop. |
| 248 | |
| 249 | The command loop shows the list of subcommands available, and |
| 250 | gives a prompt "What now> ". In general, when the prompt ends |
| 251 | with a single '>', you can pick only one of the choices given |
| 252 | and type return, like this: |
| 253 | |
| 254 | ------------ |
| 255 | *** Commands *** |
| 256 | 1: status 2: update 3: revert 4: add untracked |
| 257 | 5: patch 6: diff 7: quit 8: help |
| 258 | What now> 1 |
| 259 | ------------ |
| 260 | |
Junio C Hamano | ae05fee | 2010-01-08 07:39:46 | [diff] [blame] | 261 | You also could say `s` or `sta` or `status` above as long as the |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 262 | choice is unique. |
| 263 | |
| 264 | The main command loop has 6 subcommands (plus help and quit). |
| 265 | |
| 266 | status:: |
| 267 | |
| 268 | This shows the change between HEAD and index (i.e. what will be |
Junio C Hamano | ae05fee | 2010-01-08 07:39:46 | [diff] [blame] | 269 | committed if you say `git commit`), and between index and |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 270 | working tree files (i.e. what you could stage further before |
Junio C Hamano | ae05fee | 2010-01-08 07:39:46 | [diff] [blame] | 271 | `git commit` using `git add`) for each path. A sample output |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 272 | looks like this: |
| 273 | + |
| 274 | ------------ |
| 275 | staged unstaged path |
| 276 | 1: binary nothing foo.png |
Junio C Hamano | 3583c5c | 2023-02-22 23:31:59 | [diff] [blame] | 277 | 2: +403/-35 +1/-1 add-interactive.c |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 278 | ------------ |
| 279 | + |
| 280 | It shows that foo.png has differences from HEAD (but that is |
| 281 | binary so line count cannot be shown) and there is no |
| 282 | difference between indexed copy and the working tree |
| 283 | version (if the working tree version were also different, |
| 284 | 'binary' would have been shown in place of 'nothing'). The |
Junio C Hamano | 3583c5c | 2023-02-22 23:31:59 | [diff] [blame] | 285 | other file, add-interactive.c, has 403 lines added |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 286 | and 35 lines deleted if you commit what is in the index, but |
| 287 | working tree file has further modifications (one addition and |
| 288 | one deletion). |
| 289 | |
| 290 | update:: |
| 291 | |
Junio C Hamano | f8a7922 | 2009-03-01 08:02:50 | [diff] [blame] | 292 | This shows the status information and issues an "Update>>" |
| 293 | prompt. When the prompt ends with double '>>', you can |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 294 | make more than one selection, concatenated with whitespace or |
| 295 | 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] | 296 | 2,3,4,5,7,9 from the list. If the second number in a range is |
| 297 | omitted, all remaining patches are taken. E.g. "7-" to choose |
| 298 | 7,8,9 from the list. You can say '*' to choose everything. |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 299 | + |
| 300 | What you chose are then highlighted with '*', |
| 301 | like this: |
| 302 | + |
| 303 | ------------ |
| 304 | staged unstaged path |
| 305 | 1: binary nothing foo.png |
Junio C Hamano | 3583c5c | 2023-02-22 23:31:59 | [diff] [blame] | 306 | * 2: +403/-35 +1/-1 add-interactive.c |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 307 | ------------ |
| 308 | + |
| 309 | To remove selection, prefix the input with `-` |
| 310 | like this: |
| 311 | + |
| 312 | ------------ |
| 313 | Update>> -2 |
| 314 | ------------ |
| 315 | + |
| 316 | After making the selection, answer with an empty line to stage the |
| 317 | contents of working tree files for selected paths in the index. |
| 318 | |
| 319 | revert:: |
| 320 | |
| 321 | This has a very similar UI to 'update', and the staged |
| 322 | information for selected paths are reverted to that of the |
| 323 | HEAD version. Reverting new paths makes them untracked. |
| 324 | |
| 325 | add untracked:: |
| 326 | |
| 327 | This has a very similar UI to 'update' and |
| 328 | 'revert', and lets you add untracked paths to the index. |
| 329 | |
| 330 | patch:: |
| 331 | |
Junio C Hamano | f8a7922 | 2009-03-01 08:02:50 | [diff] [blame] | 332 | This lets you choose one path out of a 'status' like selection. |
| 333 | After choosing the path, it presents the diff between the index |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 334 | and the working tree file and asks you if you want to stage |
Junio C Hamano | 9eb5835 | 2011-05-11 20:09:24 | [diff] [blame] | 335 | the change of each hunk. You can select one of the following |
| 336 | options and type return: |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 337 | |
Junio C Hamano | 8760ea6 | 2008-03-14 08:58:45 | [diff] [blame] | 338 | y - stage this hunk |
| 339 | n - do not stage this hunk |
Junio C Hamano | d75148a | 2014-04-08 19:48:38 | [diff] [blame] | 340 | q - quit; do not stage this hunk or any of the remaining ones |
Junio C Hamano | a574a09 | 2010-06-13 19:57:10 | [diff] [blame] | 341 | a - stage this hunk and all later hunks in the file |
Junio C Hamano | d75148a | 2014-04-08 19:48:38 | [diff] [blame] | 342 | d - do not stage this hunk or any of the later hunks in the file |
Junio C Hamano | 3bd66e9 | 2009-04-18 06:17:56 | [diff] [blame] | 343 | g - select a hunk to go to |
| 344 | / - search for a hunk matching the given regex |
Junio C Hamano | 8760ea6 | 2008-03-14 08:58:45 | [diff] [blame] | 345 | j - leave this hunk undecided, see next undecided hunk |
| 346 | J - leave this hunk undecided, see next hunk |
| 347 | k - leave this hunk undecided, see previous undecided hunk |
| 348 | K - leave this hunk undecided, see previous hunk |
Junio C Hamano | e0facb9 | 2007-12-05 10:59:48 | [diff] [blame] | 349 | s - split the current hunk into smaller hunks |
Junio C Hamano | 46a38aa | 2008-07-14 03:13:27 | [diff] [blame] | 350 | e - manually edit the current hunk |
Junio C Hamano | e0facb9 | 2007-12-05 10:59:48 | [diff] [blame] | 351 | ? - print help |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 352 | + |
| 353 | After deciding the fate for all hunks, if there is any hunk |
| 354 | that was chosen, the index is updated with the selected hunks. |
Junio C Hamano | 9eb5835 | 2011-05-11 20:09:24 | [diff] [blame] | 355 | + |
| 356 | You can omit having to type return here, by setting the configuration |
Junio C Hamano | 322c624 | 2015-03-23 21:32:46 | [diff] [blame] | 357 | variable `interactive.singleKey` to `true`. |
Junio C Hamano | 17bbaca | 2006-12-25 11:36:31 | [diff] [blame] | 358 | |
| 359 | diff:: |
| 360 | |
| 361 | This lets you review what will be committed (i.e. between |
| 362 | HEAD and index). |
| 363 | |
Junio C Hamano | 97bcb48 | 2010-11-25 03:16:07 | [diff] [blame] | 364 | |
| 365 | EDITING PATCHES |
| 366 | --------------- |
| 367 | |
| 368 | Invoking `git add -e` or selecting `e` from the interactive hunk |
| 369 | selector will open a patch in your editor; after the editor exits, the |
| 370 | result is applied to the index. You are free to make arbitrary changes |
| 371 | to the patch, but note that some changes may have confusing results, or |
| 372 | even result in a patch that cannot be applied. If you want to abort the |
| 373 | operation entirely (i.e., stage nothing new in the index), simply delete |
| 374 | all lines of the patch. The list below describes some common things you |
| 375 | may see in a patch, and which editing operations make sense on them. |
| 376 | |
| 377 | -- |
| 378 | added content:: |
| 379 | |
| 380 | Added content is represented by lines beginning with "{plus}". You can |
| 381 | prevent staging any addition lines by deleting them. |
| 382 | |
| 383 | removed content:: |
| 384 | |
| 385 | Removed content is represented by lines beginning with "-". You can |
| 386 | prevent staging their removal by converting the "-" to a " " (space). |
| 387 | |
| 388 | modified content:: |
| 389 | |
| 390 | Modified content is represented by "-" lines (removing the old content) |
| 391 | followed by "{plus}" lines (adding the replacement content). You can |
| 392 | prevent staging the modification by converting "-" lines to " ", and |
| 393 | removing "{plus}" lines. Beware that modifying only half of the pair is |
| 394 | likely to introduce confusing changes to the index. |
| 395 | -- |
| 396 | |
| 397 | There are also more complex operations that can be performed. But beware |
| 398 | that because the patch is applied only to the index and not the working |
| 399 | tree, the working tree will appear to "undo" the change in the index. |
Junio C Hamano | 7165bf7 | 2011-01-04 22:06:18 | [diff] [blame] | 400 | For example, introducing a new line into the index that is in neither |
Junio C Hamano | 97bcb48 | 2010-11-25 03:16:07 | [diff] [blame] | 401 | the HEAD nor the working tree will stage the new line for commit, but |
| 402 | the line will appear to be reverted in the working tree. |
| 403 | |
| 404 | Avoid using these constructs, or do so with extreme caution. |
| 405 | |
| 406 | -- |
| 407 | removing untouched content:: |
| 408 | |
| 409 | Content which does not differ between the index and working tree may be |
| 410 | shown on context lines, beginning with a " " (space). You can stage |
| 411 | context lines for removal by converting the space to a "-". The |
| 412 | resulting working tree file will appear to re-add the content. |
| 413 | |
| 414 | modifying existing content:: |
| 415 | |
| 416 | One can also modify context lines by staging them for removal (by |
| 417 | converting " " to "-") and adding a "{plus}" line with the new content. |
| 418 | Similarly, one can modify "{plus}" lines for existing additions or |
| 419 | modifications. In all cases, the new modification will appear reverted |
| 420 | in the working tree. |
| 421 | |
| 422 | new content:: |
| 423 | |
| 424 | You may also add new content that does not exist in the patch; simply |
| 425 | add new lines, each starting with "{plus}". The addition will appear |
| 426 | reverted in the working tree. |
| 427 | -- |
| 428 | |
| 429 | There are also several operations which should be avoided entirely, as |
| 430 | they will make the patch impossible to apply: |
| 431 | |
| 432 | * adding context (" ") or removal ("-") lines |
| 433 | * deleting context or removal lines |
| 434 | * modifying the contents of context or removal lines |
| 435 | |
Junio C Hamano | ba8baee | 2022-09-14 20:25:23 | [diff] [blame] | 436 | CONFIGURATION |
| 437 | ------------- |
| 438 | |
| 439 | include::includes/cmd-config-section-all.txt[] |
| 440 | |
| 441 | include::config/add.txt[] |
| 442 | |
Junio C Hamano | 9049d91 | 2008-05-29 02:09:50 | [diff] [blame] | 443 | SEE ALSO |
Junio C Hamano | 2bb1310 | 2006-03-06 07:10:21 | [diff] [blame] | 444 | -------- |
Junio C Hamano | 35738e8 | 2008-01-07 07:55:46 | [diff] [blame] | 445 | linkgit:git-status[1] |
| 446 | linkgit:git-rm[1] |
| 447 | linkgit:git-reset[1] |
| 448 | linkgit:git-mv[1] |
| 449 | linkgit:git-commit[1] |
| 450 | linkgit:git-update-index[1] |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 451 | |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 452 | GIT |
| 453 | --- |
Junio C Hamano | f7c042d | 2008-06-06 22:50:53 | [diff] [blame] | 454 | Part of the linkgit:git[1] suite |