git ignore exception not working as desired

WinXP + mysisGit1.7

In my .gitignore file, but still can’t see Demos/path/to/file/file.cpp being tracked by git.

I have below entries:


The absolute path is: c:\Project\Demos\path\to\file\file.cpp

What could be wrong? Please help, thanks.


I found the way how mysisGit .gitignore work on WindowsXP can only ignore certain type of file, then exclude some files with same type. For example:


It doesn’t work ignore folder and exclude some files under that folder. Below won’t work:




However, I do find that there’s an exception. There’s a work-around way to exclude files just right under the ignored folder (not to its subfolder). This works.


But this way is only limited when the file is not in any subfolder, so it’s not so useful.

So I end up still commit most of source files, even I was only interested in a few files while tracking some others big project. Which means there’re a bunch of files I won’t touch but still need to commit them.

Here is another thread that had similar problem.

  • Git's alternative to .hgrcpath
  • How do I setup DiffMerge with msysgit / gitk?
  • git.cmd vs git.exe - what is the difference and which one should be used?
  • Private key, access Gitolite repository for Netbeans on Win XP
  • Git+SSH on Windows. Git pull dies with “Application Error.”
  • Eclipse and Git integration fails on Windows XP
  • Git: Trouble doing push: error: src refspec remotes/origin/iteration1 matches more than one
  • Updating GitExtensions on Windows XP with .NET 4.0 gets error '…4.0 must be installed…'
  • 4 Solutions collect form web for “git ignore exception not working as desired”

    Your .gitignore exception does not work because “It is not possible to re-include a file if a parent directory of that file is excluded” [source].

    As an ugly-but-working workaround, do this on every directory level on the path to your file:

    1. exclude all content of the directory
    2. re-include the sub-directory leading to your file (or finally, your file).

    Your entries would look like this, with each two-line section executing these steps for one level of the directory hierarchy:


    So, you don’t start by excluding Demos/ like the question author did. It’s a parent directory of our file, so you would have to re-include it right afterwards. Instead, start by excluding its contents: Demos/**.

    Do add to .gitignore as follows:


    But make sure, that at least a one file added to git index from the folderUnderRepoRoot folder.

    Can you try replacing it with !/Demos/path/to/file/file.cpp (note the leading slash after the exclamation mark) instead and try again?

    If it’s just one file, I wouldn’t normally modify .gitignore

    The following should ignore .gitignore and allow you to add the file

    git add -f Demos/path/to/file/file.cpp
    Git Baby is a git and github fan, let's start git clone.