I think the message

no changes added to commit (use "git add" and/or "git commit -a")

is not clear enough since it lacks on the "git rm" command which
is shown above.
#   (use "git add/rm <file>..." to update what will be committed)

Of course, applying this topic would solve this problem.
Alternatively we could adjust the message.

On Mon, Aug 13, 2012 at 7:54 PM, Junio C Hamano <gits...@pobox.com> wrote:
> Angus Hammond <angu...@gmail.com> writes:
>
>> ... Personally I'd like to see
>> "git add foo" here be equivalent "git rm --cached foo", but I can
>> understand how others might prefer git add not to be destructive like
>> that.
>
> Funny that you bring it up this week.  As I wrote in
>
>   http://git-blame.blogspot.com/2012/08/leftover-bits.html
>
> I think the following topic should be revisited:
>
>   http://thread.gmane.org/gmane.comp.version-control.git/171811/focus=171841
>
> -- >8 --
> From: Junio C Hamano <gits...@pobox.com>
> Date: Tue, 19 Apr 2011 12:18:20 -0700
> Subject: [PATCH] git add: notice removal of tracked paths by default
>
> When run without "-u" or "-A" option,
>
>     $ edit subdir/x
>     $ create subdir/y
>     $ rm subdir/z
>     $ git add subdir/
>
> does not notice removal of paths (e.g. subdir/z) from the working tree.
> Make "git add" to pretend as if "-A" is given when there is a pathspec on
> the command line.  "git add" without any argument continues to be a no-op.
>
> When resolving a conflict to remove a path, the current code tells you to
> "git rm $path", but now with this patch you can say "git add $path".  Of
> course you can do "git add -A $path" without this patch.
>
> In either case, the operation "git add" is about "adding the state of the
> path in the working tree to the index".  The state may happen to be "path
> removed", not "path has an updated content".
>
> The semantic change can be seen by a breakage in t2200, test #15.  There,
> a merge has conflicts in path4 and path6 (which are removed from the
> working tree), and test checks "git add path4" to resolve it must fail,
> and makes sure "add -u" needs to be used.  We do not have to do this
> anymore.
>
> Signed-off-by: Junio C Hamano <gits...@pobox.com>
> ---
>  builtin/add.c         | 3 +++
>  t/t2200-add-update.sh | 4 ----
>  2 files changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/builtin/add.c b/builtin/add.c
> index 89dce56..4eae028 100644
> --- a/builtin/add.c
> +++ b/builtin/add.c
> @@ -389,6 +389,9 @@ int cmd_add(int argc, const char **argv, const char 
> *prefix)
>
>         if (addremove && take_worktree_changes)
>                 die(_("-A and -u are mutually incompatible"));
> +       /* default "git add pathspec..." to "git add -A pathspec..." */
> +       if (!take_worktree_changes && argc)
> +               addremove = 1;
>         if (!show_only && ignore_missing)
>                 die(_("Option --ignore-missing can only be used together with 
> --dry-run"));
>         if ((addremove || take_worktree_changes) && !argc) {
> diff --git a/t/t2200-add-update.sh b/t/t2200-add-update.sh
> index 4cdebda..b2fcd01 100755
> --- a/t/t2200-add-update.sh
> +++ b/t/t2200-add-update.sh
> @@ -150,10 +150,6 @@ test_expect_success 'add -u resolves unmerged paths' '
>         echo 2 >path3 &&
>         echo 2 >path5 &&
>
> -       # Explicit resolving by adding removed paths should fail
> -       test_must_fail git add path4 &&
> -       test_must_fail git add path6 &&
> -
>         # "add -u" should notice removals no matter what stages
>         # the index entries are in.
>         git add -u &&
> --
> 1.7.12.rc2.85.g1de7134
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to