     {includeHidden, excludeVcsIgnores} = options
     {inclusions, exclusions, globalExclusions} = @sanitizePaths(options)
 
-    @inclusions = @createMatchers(inclusions, true)
-    @exclusions = @createMatchers(exclusions, false)
-    @globalExclusions = @createMatchers(globalExclusions, false)
+    @inclusions = @createMatchers(inclusions, {deepMatch: true})
+    @exclusions = @createMatchers(exclusions, {deepMatch: false})
+    @globalExclusions = @createMatchers(globalExclusions, {deepMatch: false, disallowDuplicatesFrom: @inclusions})
 
     @repo = GitUtils.open(rootPath) if excludeVcsIgnores
 

        addFileMatcher(matchers, pattern)

    matchers

    @exclusions.file.push(matcher)
    @exclusions.directory.push(matcher)

  createMatchers: (patterns=[], {deepMatch, disallowDuplicatesFrom}={}) ->
    addFileMatcher = (matchers, pattern) =>
      return if disallowDuplicatesFrom? and @containsPattern(disallowDuplicatesFrom, 'file', pattern)
      matchers.file.push(new Minimatch(pattern, PathFilter.MINIMATCH_OPTIONS))

    addDirectoryMatcher = (matchers, pattern, deepMatch) =>
      # It is important that we keep two permutations of directory patterns:
      #
      # * 'directory/anotherdir'
