git存储库包含两个目录:A和B1。 这是目录结构:
$ 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
这是.gitignore文件,它将目录A和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
gitignore文件基于http://git-scm.com/docs/gitignore
中的最后一个示例从白名单目录中,如何将所有列入白名单的目录添加到索引中? 这不起作用:
$ git add / --dry-run
fatal: /: '/' is outside repository
这适用于顶级目录:
$ git add . --dry-run
add 'A/A1/a1.txt'
add 'A/a.txt'
add 'B/B1/b1.txt'
但是从白名单目录中只有该目录被添加到索引中(缺少B1):
$ cd A
A$ git add . --dry-run
add 'A/A1/a1.txt'
add 'A/a.txt'
类似的结果:
A$ git add * --dry-run
add 'A/A1/a1.txt'
add 'A/a.txt'
我想要一个命令从任何列入白名单的目录中添加所有列入白名单的目录,这样我就不会忘记一个。
答案 0 :(得分:1)
使用现代Git,您可以使用:/
" top dir " pathspec:
$ git add :/