Тут понадбилось разобраться с сабжем, почитал инет, потестировал.
# Ignore everything under "directory"
directory/*
# But don't ignore "another_directory"
!directory/another_directory
# But ignore everything under "another_directory"
directory/another_directory/*
# But don't ignore "file_to_be_staged.txt"
!directory/another_directory/file_to_be_staged.txt
А представьте директорию глубиной в 20 :(
Хм. А синтаксис gitignore точно делал адекватный человек?