.gitignore没有遵循一些规则(GitHub)

Col*_*kay 0 git github gitignore

是的,这看起来像是重复的,因为我可以看到之前已经问了几次.但是我看到的其他答案都没有帮助我.

我有一个Umbraco安装,我想存储在Git(确切地说是GitHub),我显然想省略Umbraco创建的日志文件和临时文件.

我的.gitignore文件中有以下内容:

App_Data/TEMP/
App_Data/Logs/
App_Data/ClientDependency/
App_Data/Preview/
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用.这些目录中的文件仍然会被添加.

我试过在最后添加一个星号(文档说它不应该被需要 - 它只处理该目录中的文件,如果它在那里.)

我确保每行末尾没有空格.

我仔细检查了目录名的大小写.

我已经从一种方式换到另一种方式.

如果我从存储库的根目录放入完整路径它确实有效,但这太具体了.(虽然我现在打算用它来解决这个问题).如果我们创建基于Umbraco的新项目,我希望能够轻松地重用.gitignore文件.

未正确处理完整路径的其他规则(例如NuGet的包文件夹)正在被正确处理.

packages/
Run Code Online (Sandbox Code Playgroud)

这条规则有效 - 我并没有真正看到差异.

谁能看到我在这里做错了什么?

UPDATE

有效的完整路径是:

/src/Company.Client.Web/App_Data/Logs/
/src/Company.Client.Web/App_Data/TEMP/
/src/Company.Client.Web/App_Data/ClientDependency/
/src/Company.Client.Web/App_Data/Preview/
Run Code Online (Sandbox Code Playgroud)

(我已经混淆了一点,但那就是现在的情况)

以下是GitHub for Windows所展示的内容: 这是GitHub for Windows正在展示的内容

更新2

.git文件夹位于存储库的根目录下,因此/.换句话说D:\github\RepositoryName\.git\,为了比较该src文件夹D:\github\RepositoryName\src\

bbo*_*ler 6

自从git 1.8.2(2013年3月8日)开始,您现在可以使用**:

.gitignore.gitattributes文件中的模式可以**/作为匹配0或更多级别子目录的模式.

例如" foo/**/bar"匹配" bar"在" foo"本身或" "的子目录中foo.

所以你要:

**/App_Data/TEMP/
**/App_Data/Logs/
**/App_Data/ClientDependency/
**/App_Data/Preview/
Run Code Online (Sandbox Code Playgroud)


Dan*_*rth 5

在.gitignore中指定文件名或文件夹时,无论它在目录结构中出现在何处,都会被忽略.这就是原因packages/.

对于像App_Data/TEMP/.这样的部分路径,情况并非如此.

你能做的是以下几点:

*/*/App_Data/TEMP/
Run Code Online (Sandbox Code Playgroud)

App_Data/TEMP无论两个父目录如何命名,这都将忽略.但它只适用于层次结构的这个确切深度的那些文件夹,即它将忽略这些:

  • SRC/Company.Client.Web/App_Data文件/ TEMP
  • SRC/Company.Client2.Web/App_Data文件/ TEMP

但它不会忽视这些:

  • SRC/App_Data文件/ TEMP
  • SRC/Company.Client.Web /样机/ App_Data文件/ TEMP

这是按照文档的说明设计:

[当模式包含斜杠但不以一个斜杠结束时],git将模式视为适合fnmatch(3)使用FNM_PATHNAME标志消耗的shell glob:模式中的通配符与路径名中的/不匹配.例如,"Documentation/*.html"匹配"Documentation/git.html",但不匹配"Documentation/ppc/ppc.html"或"tools/perf/Documentation/perf.html".