Agregue todos los directorys incluidos en la list blanca a un índice

Un repository git contiene dos directorys: A y B1. Esta es la estructura del directory:

$ find -name "*.*" -print ./.git/hooks/applypatch-msg.sample ./.git/hooks/commit-msg.sample ./.git/hooks/post-update.sample ./.git/hooks/pre-applypatch.sample ./.git/hooks/pre-commit.sample ./.git/hooks/pre-push.sample ./.git/hooks/pre-rebase.sample ./.git/hooks/prepare-commit-msg.sample ./.git/hooks/update.sample ./A/a.txt ./A/A1/a1.txt ./B/b.txt ./B/B1/b1.txt ./C/c.txt 

Este es el file .gitignore, list blanca los directorys A y B1:

 $ more .gitignore # exclude files and directories in top directory /* # include the A directory !/A # include the B directory !/B # exclude files and directories in B /B/* # include the B/B1 directory !/B/B1 

El file gitignore se basa en el último ejemplo en http://git-scm.com/docs/gitignore

Desde dentro de un directory incluido en la list blanca, ¿cómo agregar todos los directorys incluidos en la list blanca al índice? Esto no funciona:

 $ git add / --dry-run fatal: /: '/' is outside repository 

Esto funciona desde el directory superior:

 $ git add . --dry-run add 'A/A1/a1.txt' add 'A/a.txt' add 'B/B1/b1.txt' 

Pero desde dentro de un directory de la list blanca solo se agrega ese directory al índice (falta B1):

 $ cd A A$ git add . --dry-run add 'A/A1/a1.txt' add 'A/a.txt' 

Resultados similares con:

 A$ git add * --dry-run add 'A/A1/a1.txt' add 'A/a.txt' 

Quiero un command para agregar todos los directorys incluidos en la list blanca de cualquier directory incluido en la list blanca, así no me olvido de ninguno.

Con Git moderno puede usar :/ pathspec " dir superior ":

 $ git add :/