summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 835b2ae)
raw | patch | inline | side by side (parent: 835b2ae)
author | Junio C Hamano <junkio@cox.net> | |
Mon, 25 Dec 2006 09:30:55 +0000 (01:30 -0800) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Mon, 25 Dec 2006 09:30:55 +0000 (01:30 -0800) |
Signed-off-by: Junio C Hamano <junkio@cox.net>
Documentation/git-add.txt | patch | blob | history | |
builtin-add.c | patch | blob | history |
index d86c0e7f19ee67556b48bb7f94ab9039a0195ea6..8710b3a75e0bfb7d0643a25ee7b9548ea5b01261 100644 (file)
SYNOPSIS
--------
-'git-add' [-n] [-v] [--] <file>...
+'git-add' [-n] [-v] [--interactive] [--] <file>...
DESCRIPTION
-----------
-v::
Be verbose.
+\--interactive::
+ Add modified contents in the working tree interactively to
+ the index.
+
\--::
This option can be used to separate command-line options from
the list of files, (useful when filenames might be mistaken
(i.e. you are listing the files explicitly), it does not
consider `subdir/git-foo.sh`.
+Interactive mode
+----------------
+When the command enters the interactive mode, it shows the
+output of the 'status' subcommand, and then goes into ints
+interactive command loop.
+
+The command loop shows the list of subcommands available, and
+gives a prompt "What now> ". In general, when the prompt ends
+with a single '>', you can pick only one of the choices given
+and type return, like this:
+
+------------
+ *** Commands ***
+ 1: status 2: update 3: revert 4: add untracked
+ 5: patch 6: diff 7: quit 8: help
+ What now> 1
+------------
+
+You also could say "s" or "sta" or "status" above as long as the
+choice is unique.
+
+The main command loop has 6 subcommands (plus help and quit).
+
+status::
+
+ This shows the change between HEAD and index (i.e. what will be
+ committed if you say "git commit"), and between index and
+ working tree files (i.e. what you could stage further before
+ "git commit" using "git-add") for each path. A sample output
+ looks like this:
++
+------------
+ staged unstaged path
+ 1: binary nothing foo.png
+ 2: +403/-35 +1/-1 git-add--interactive.perl
+------------
++
+It shows that foo.png has differences from HEAD (but that is
+binary so line count cannot be shown) and there is no
+difference between indexed copy and the working tree
+version (if the working tree version were also different,
+'binary' would have been shown in place of 'nothing'). The
+other file, git-add--interactive.perl, has 403 lines added
+and 35 lines deleted if you commit what is in the index, but
+working tree file has further modifications (one addition and
+one deletion).
+
+update::
+
+ This shows the status information and gives prompt
+ "Update>>". When the prompt ends with double '>>', you can
+ make more than one selection, concatenated with whitespace or
+ comma. Also you can say ranges. E.g. "2-5 7,9" to choose
+ 2,3,4,5,7,9 from the list. You can say '*' to choose
+ everything.
++
+What you chose are then highlighted with '*',
+like this:
++
+------------
+ staged unstaged path
+ 1: binary nothing foo.png
+* 2: +403/-35 +1/-1 git-add--interactive.perl
+------------
++
+To remove selection, prefix the input with `-`
+like this:
++
+------------
+Update>> -2
+------------
++
+After making the selection, answer with an empty line to stage the
+contents of working tree files for selected paths in the index.
+
+revert::
+
+ This has a very similar UI to 'update', and the staged
+ information for selected paths are reverted to that of the
+ HEAD version. Reverting new paths makes them untracked.
+
+add untracked::
+
+ This has a very similar UI to 'update' and
+ 'revert', and lets you add untracked paths to the index.
+
+patch::
+
+ This lets you choose one path out of 'status' like selection.
+ After choosing the path, it presents diff between the index
+ and the working tree file and asks you if you want to stage
+ the change of each hunk. You can say:
+
+ y - add the change from that hunk to index
+ n - do not add the change from that hunk to index
+ a - add the change from that hunk and all the rest to index
+ d - do not the change from that hunk nor any of the rest to index
+ j - do not decide on this hunk now, and view the next
+ undecided hunk
+ J - do not decide on this hunk now, and view the next hunk
+ k - do not decide on this hunk now, and view the previous
+ undecided hunk
+ K - do not decide on this hunk now, and view the previous hunk
++
+After deciding the fate for all hunks, if there is any hunk
+that was chosen, the index is updated with the selected hunks.
+
+diff::
+
+ This lets you review what will be committed (i.e. between
+ HEAD and index).
+
+
See Also
--------
gitlink:git-status[1]
diff --git a/builtin-add.c b/builtin-add.c
index aa2f0f32af938dc033d40fc0e909b208b3781120..9443bae5352326a1915dd5f6ed65bc1aa4815408 100644 (file)
--- a/builtin-add.c
+++ b/builtin-add.c
#include "cache-tree.h"
static const char builtin_add_usage[] =
-"git-add [-n] [-v] <filepattern>...";
+"git-add [-n] [-v] [--interactive] [--] <filepattern>...";
static void prune_directory(struct dir_struct *dir, const char **pathspec, int prefix)
{