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.

  • System.Speech in Mono on Linux
  • Gitosis post-update wont run
  • git: put THEIR commits AFTER my commits with a single rebase command
  • How to change a git submodule to point to a subfolder?
  • Git Log Stat Summary Results Clarification
  • Perform a Git operation from different working directory
  • 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.

  • Restoring git directory while preserving history
  • GitHub add users to work together on repo…?
  • Git filter-branch with index-filter does not work and remove directories as expected
  • git svn dcommit fails because of assertion error “svn_fspath__is_canonical(child_fspath)” (cygwin)
  • Redmine The entry or revision was not found in the repository.
  • Calling external commands when switching branches
  • 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.