git忽略异常不按预期工作

Sta*_*tan 13 git windows-xp gitignore

WinXP + mysisGit1.7

在我的.gitignore文件中,但仍然看不到Demos/path/to/file/file.cpp被git跟踪.

我有以下条目:

Demos/
!Demos/path/to/file/file.cpp
Run Code Online (Sandbox Code Playgroud)

绝对路径是: c:\Project\Demos\path\to\file\file.cpp

可能有什么不对?请帮忙,谢谢.


编辑:

我发现mysisGit .gitignore在WindowsXP上工作的方式只能忽略某些类型的文件,然后排除一些相同类型的文件.例如:

*.bak
!tracking.bak
!/path/to/file/tracking2.bak
Run Code Online (Sandbox Code Playgroud)

它不起作用忽略文件夹并排除该文件夹下的一些文件.以下不起作用:

/folderUnderRepoRoot/
!/folderUnderRepoRoot/tracking.cpp
Run Code Online (Sandbox Code Playgroud)

也不

anyFolderNamedLikeThis/
!anyFolderNamedLikeThis/tracking.cpp
!/anyFolderNamedLikeThis/tracking.cpp
Run Code Online (Sandbox Code Playgroud)

但是,我发现有一个例外.有一种解决方法可以将文件排除在被忽略的文件夹下(而不是它的子文件夹下).这有效.

/folderUnderRepoRoot/*
/folderUnderRepoRoot/tracking.cpp
Run Code Online (Sandbox Code Playgroud)

但是这种方式仅在文件不在任何子文件夹中时受到限制,因此它没那么有用.

所以我最终仍然提交了大部分源文件,即使我只对一些文件感兴趣,同时跟踪其他一些大项目.这意味着有一堆文件我不会碰,但仍然需要提交它们.

这是另一个有类似问题的线程.

tan*_*ius 11

您的.gitignore异常不起作用,因为"如果排除该文件的父目录,则无法重新包含文件"[ source ].

作为一种丑陋但有效的解决方法,请在文件路径的每个目录级别执行此操作:

  1. 排除目录的所有内容
  2. 重新包含通向您的文件的子目录(或最后,您的文件).

您的条目看起来像这样,每个两行部分为目录层次结构的一个级别执行这些步骤:

Demos/*
!Demos/path/

Demos/path/*
!Demos/path/to/

Demos/path/to/*
!Demos/path/to/file/

Demos/path/to/file/*
!Demos/path/to/file/file.cpp
Run Code Online (Sandbox Code Playgroud)

所以,你不要Demos/像问题作者那样排除.它是我们文件的父目录,因此您必须在之后重新包含它.相反,首先要排除其内容:Demos.


Man*_*dan 0

您可以尝试将其替换为!/Demos/path/to/file/file.cpp(注意感叹号后面的前导斜杠),然后重试吗?