让Git忽略文件

20

我想让git忽略我的某些文件,我找到了一篇关于如何做到这一点的描述:

来自:http://github.com/guides/git-cheat-sheet 要忽略一些文件

在根目录下添加一个名为 .gitignore 的文件,并将要忽略的文件(注释以“#”开头)添加到其中,例如:*.log db/schema.rb db/schema.sql。

Git会自动忽略空目录。如果你想要一个log/目录,但是想要忽略其中的所有文件,可以在根目录的 .gitignore 文件中添加以下行(以“!”开头的行是例外):

log/* !.gitignore

然后在空目录中添加一个空的 .gitignore 文件:

touch log/.gitignore

所以我在我的项目文件夹中创建了一个名为 .gitignore 的文件,并在其中写入了以下内容:

phpMyAdmin/*
nbproject/*
inc/mysql_config.php
!.gitignore

但是当我提交时,文件并没有从提交中排除...


是所有文件都没有被排除,还是有一些被排除了而另一些没有?如果您提供更多关于您所看到的和期望的细节(包括文件路径),那将会很有帮助。 - Guildencrantz
注意NetBeans忽略的问题... nbproject应该被检入版本控制系统。nbproject包含项目元数据,使其他用户可以在NetBeans中打开项目,而无需首先导入项目。 来源 - Ron van der Heijden
https://www.gitignore.io/ 我创建了一个网络工具,可以帮助你为你的项目生成有用的.gitignore文件。它将帮助你忽略操作系统、编程语言和IDE生成的文件。 - undefined
真的很好,而且很有用! - undefined
2个回答

33
我创建了一个网络工具,可以帮助您为项目生成有用的.gitignore文件。它将帮助您忽略操作系统、编程语言和IDE产生的文件。

https://www.gitignore.io/


2
这真的很好而且很有用! - Faery

29
根据gitignore 文档描述:

描述

gitignore 文件用于指定 Git 应该忽略的有意无法跟踪的文件。请注意,所有的 gitignore 文件只涉及尚未被 Git 跟踪的文件;为了忽略已经跟踪的文件中未提交的更改,请参考git update-index --assume-unchanged 的文档。

因此,如果您已经将它们添加到 Git 中,那么它就没有帮助了。这主要是为了防止在第一次添加时添加它们。这样,您可以忽略 .tmp 文件并添加整个目录,而不必担心会添加 .tmp 文件。

我认为您可以通过以下命令将其从索引中删除:

git rm --cached file_to_stop_tracking_but_dont_want_to_delete.txt

更新:

同时,.gitignore 文件需要放置在根目录或者至少在那些目录的上层。此外,还需将目录中的 "*" 移除:

phpMyAdmin/
nbproject/
inc/mysql_config.php
!.gitignore
要注意 phpMyAdmin//phpMyAdminphpMyAdmin 的区别。另外参考 man gitignore
  • 如果模式以斜杠结尾,则会将其删除,但此时只匹配目录。换句话说,foo/ 会匹配目录 foo 及其下的路径,但不会匹配普通文件或符号链接 foo(这与 Git 中的 pathspec 的工作方式一致)。

  • 如果模式不包含斜杠 /,Git 将其视为 shell glob 模式,并检查是否与没有前导目录的路径名匹配。

  • 否则,Git 将该模式视为适合由 fnmatch(3) 使用 FNM_PATHNAME 标志消耗的 shell glob:模式中的通配符将不匹配路径名中的 /。例如,Documentation/*.html 匹配 Documentation/git.html,但不匹配 Documentation/ppc/ppc.html。前导斜杠匹配路径名的开头;例如,/*.c 匹配 cat-file.c,但不匹配 mozilla-sha1/sha1.c


.gitignore文件是否与这些文件在同一个目录下? - eruciform
.gitignore 文件位于项目的根目录。 - Victor Bjelkholm
我必须包含 -r 以便递归地删除文件,因此使用 git rm -r --cached path/to/file/ - John Blythe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接