2013/12/7 Martin Langhoff <martin.langhoff@xxxxxxxxx>: > Tested with git 1.7.12.4 (Apple Git-37) and git 1.8.3.1 on F20. > > $ mkdir foo > $ cd foo > $ git init > Initialized empty Git repository in /tmp/foo/.git/ > $ mkdir -p modules/boring > $ mkdir -p modules/interesting > $ touch modules/boring/lib.c > $ touch modules/interesting/other.c > $ touch modules/interesting/lib.c > $ git add modules/interesting/lib.c > $ git status > # On branch master > # > # Initial commit > # > # Changes to be committed: > # (use "git rm --cached <file>..." to unstage) > # > # new file: modules/interesting/lib.c > # > # Untracked files: > # (use "git add <file>..." to include in what will be committed) > # > # modules/boring/ > # modules/interesting/other.c > > $ echo '/modules/' > .gitignore > $ echo '!/modules/interesting/' >> .gitignore > I happened to write a software "Gistore" to backup arbitrary files and directories using Git, and it will save interesting things in .git/info/exclude. For your case, you could write .gitignore as: /modules/* !/modules/interesting !/modules/interesting/** You can find my code in Gistore to generate proper .gitignore here: https://github.com/jiangxin/gistore/blob/master/lib/gistore/repo.rb#L228 Because I will ignore all files except what I want, the ignore file would be: * !/modules !/modules/interesting !/modules/interesting/** -- Jiang Xin -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html