This is an old question but still relevant. In my case on Visual Studio Community 2015, .gitignore is being processed BUT it interprets the rules incorrectly.
For example, this .gitignore file works in the CLI git client - it ignores everything but the subtree in /Assets/Scripts, and the .gitignore file.
# Ignore everything
*
# But descend into directories
!*/
# Recursively allow files under subtree
!/Assets/Scripts/**
#don't ignore this file
!.gitignore
When VS parses the above .gitignore file, it seems to incorrectly interpret an allowed folder as: Allow this folder, plus all files and folders within it recursively - so every subtree incorrectly shows up in the repository. To achieve the same result as the code above from within Visual Studio, I had to change it to this: Note the following code works in VS, but no longer works in the Git CLI.
# Ignore everything
*
#But don't ignore the /assets folder
!/Assets/
#Ignore everything inside the assets folder
/Assets/*
#but don't ignore the Assets/Scripts subtree
!/Assets/Scripts
#don't ignore this file
!.gitignore