path: root/Documentation/git-add.txt
diff options
authorNicolas Pitre <>2006-12-04 16:13:39 (GMT)
committerJunio C Hamano <>2006-12-05 00:33:51 (GMT)
commit366bfcb68f4d98a43faaf17893a1aa0a7a9e2c58 (patch)
tree70d87fdba82ccf99095148a4918a77e019d12891 /Documentation/git-add.txt
parentba988a83f0cfdafdcfdc7ed44253840ea83578fb (diff)
make 'git add' a first class user friendly interface to the index
This brings the power of the index up front using a proper mental model without talking about the index at all. See for example how all the technical discussion has been evacuated from the git-add man page. Any content to be committed must be added together. Whether that content comes from new files or modified files doesn't matter. You just need to "add" it, either with git-add, or by providing git-commit with -a (for already known files only of course). No need for a separate command to distinguish new vs modified files please. That would only screw the mental model everybody should have when using GIT. Signed-off-by: Nicolas Pitre <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'Documentation/git-add.txt')
1 files changed, 28 insertions, 25 deletions
diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt
index 6342ea3..d86c0e7 100644
--- a/Documentation/git-add.txt
+++ b/Documentation/git-add.txt
@@ -3,7 +3,7 @@ git-add(1)
-git-add - Add files to the index file
+git-add - Add file contents to the changeset to be committed next
@@ -11,16 +11,31 @@ SYNOPSIS
-A simple wrapper for git-update-index to add files to the index,
-for people used to do "cvs add".
+All the changed file contents to be committed together in a single set
+of changes must be "added" with the 'add' command before using the
+'commit' command. This is not only for adding new files. Even modified
+files must be added to the set of changes about to be committed.
-It only adds non-ignored files, to add ignored files use
+This command can be performed multiple times before a commit. The added
+content corresponds to the state of specified file(s) at the time the
+'add' command is used. This means the 'commit' command will not consider
+subsequent changes to already added content if it is not added again before
+the commit.
+The 'git status' command can be used to obtain a summary of what is included
+for the next commit.
+This command only adds non-ignored files, to add ignored files use
"git update-index --add".
+Please see gitlink:git-commit[1] for alternative ways to add content to a
- Files to add to the index (see gitlink:git-ls-files[1]).
+ Files to add content from.
Don't actually add the file(s), just show if they exist.
@@ -34,27 +49,12 @@ OPTIONS
for command-line options).
-The list of <file> given to the command is fed to `git-ls-files`
-command to list files that are not registered in the index and
-are not ignored/excluded by `$GIT_DIR/info/exclude` file or
-`.gitignore` file in each directory. This means two things:
-. You can put the name of a directory on the command line, and
- the command will add all files in it and its subdirectories;
-. Giving the name of a file that is already in index does not
- run `git-update-index` on that path.
git-add Documentation/\\*.txt::
- Adds all `\*.txt` files that are not in the index under
- `Documentation` directory and its subdirectories.
+ Adds content from all `\*.txt` files under `Documentation`
+ directory and its subdirectories.
Note that the asterisk `\*` is quoted from the shell in this
example; this lets the command to include the files from
@@ -62,15 +62,18 @@ subdirectories of `Documentation/` directory.
git-add git-*.sh::
- Adds all git-*.sh scripts that are not in the index.
+ Considers adding content from all git-*.sh scripts.
Because this example lets shell expand the asterisk
(i.e. you are listing the files explicitly), it does not
- add `subdir/` to the index.
+ consider `subdir/`.
See Also