# How to stage a tree with all changes?

3 messages from 2007-06-13 to 2007-06-13. Participants: David Kastrup, Matthieu Moy, Jeff King.
Thread: https://gitlist.dev/t/8594

## David Kastrup, 2007-06-13 16:22

Subject: How to stage a tree with all changes?
Message-ID: <861wgf964g.fsf@lola.quinscape.zz>
URL: https://gitlist.dev/e/861wgf964g.fsf%40lola.quinscape.zz

```

Suppose I have a number of changes in a tree: additions, deletions,
renames and so on.

How do I stage and commit all of that?

git-commit -a

omits new files.

git-add .
git-commit -a

seemingly overlooks deletions.

What am I overlooking?  This should be simple, shouldn't it?

-- 
David Kastrup

```

## Matthieu Moy, 2007-06-13 16:47

Subject: Re: How to stage a tree with all changes?
Message-ID: <vpqy7inajib.fsf@bauges.imag.fr>
URL: https://gitlist.dev/e/vpqy7inajib.fsf%40bauges.imag.fr
In-Reply-To: <861wgf964g.fsf@lola.quinscape.zz>

```
David Kastrup <dak@gnu.org> writes:

> Suppose I have a number of changes in a tree: additions, deletions,
> renames and so on.

At commit time, a rename is just an add+delete for git. It'll
investigate renames with heuristics later, when needed.

> How do I stage and commit all of that?

Well, what I usually do is

  $ git status

(nicer with 
[status]
	color = auto
in ~/.gitconfig)

and then "confirm" one by one the things I actually want to commit.

> git-commit -a
>
> omits new files.
>
> git-add .
> git-commit -a

The -a is not necessary if you just did "git add .".

> seemingly overlooks deletions.

In most cases, you'd have deleted the files with "rm", and you could
have told git at that time, using "git rm" instead. Otherwise,

  $ git-ls-files -z | git-update-index --remove -z --stdin

will remove deleted files from the index after the fact. But I don't
know any porcelain command to do that. Perhaps a "git rm -u" could be
a nice dual for "git add -u"?

-- 
Matthieu

```

## Jeff King, 2007-06-13 18:40

Subject: Re: How to stage a tree with all changes?
Message-ID: <20070613184017.GF10941@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20070613184017.GF10941%40coredump.intra.peff.net
In-Reply-To: <861wgf964g.fsf@lola.quinscape.zz>

```
On Wed, Jun 13, 2007 at 06:22:23PM +0200, David Kastrup wrote:

> git-add .
> git-commit -a
> 
> seemingly overlooks deletions.

It shouldn't. Try this:

mkdir repo && cd repo
git init
echo foo >foo
git add .
git commit -m initial
rm foo
echo bar >bar
git add .
git commit -a

'bar' is scheduled for addition, and 'foo' is scheduled for deletion.
Have you perhaps removed a file, but it's still in the working
directory, and so picked up by your git-add? Can you give us a test
case?

> What am I overlooking?  This should be simple, shouldn't it?

Yes, it should. :)

-Peff

```
