关于git:如何在文件夹中使用.gitignore?


How do I use .gitignore in a folder?

我的Git存储库中有一个img文件夹。我想使用.gitignore排除文件夹中的图像。

我用cd 进入那个文件夹,mkdir .gitignore进入。但当我使用cx1〔2〕时,图像不被排除在外。我需要添加什么才能将它们从add中排除?


.gitignore文件仅通过其存在就没有任何效果。一个空的.gitignore文件只是一个空文件,不多了。

Git读取.gitignore文件的内容,并使用它包含的模式来决定要放入repo的文件和要忽略的文件。了解更多有关.gitignore文件格式的信息。

与此问题状态的其他答案相反,您可以在存储库的任何目录中拥有一个.gitignore文件,而不仅仅是在根目录中。

当它决定如何处理一个新文件(跟踪或忽略它)时,它结合了来自多个gitignore源的信息:

  • 命令行;
  • 同一目录中的.gitignore文件和repo内父目录中的.gitingore文件;
  • 本地存储库忽略文件(不推送到远程存储库)$GIT_DIR/info/exclude
  • ~/.gitconfig中指定的全局忽略文件;它适用于用户的所有本地存储库。

回到你的具体情况,如果你想让Git忽略img目录中的文件,你可以把*放在img/.gitignore文件中。

另一种选择是将/*放在repo根目录的.gitignore文件中。将替换为从repo根到img文件的实际路径。

文件.gitignore的内容仅由git add使用。如果一个文件已经在存储库中,那么在.gitignore中添加一个与其名称匹配的模式不会使Git从现在开始忽略它。必须手动将其从回购协议中删除(并承诺删除),否则Git将继续跟踪其内容。

在您的情况下,要运行的命令如下:

1
2
3
4
5
cd <path-to-img-directory>
echo"*">> .gitignore
git rm *
git add .gitignore
git commit

您的.gitignore文件应该位于存储库的根目录中,以开始。这样更容易管理。然后,您可以将单独的.gitignore文件放在需要覆盖根.gitignore文件中定义的模式的子目录中。

要排除img目录,只需将此行添加到.gitignore即可:

1
img/

如果要使排除不区分大小写,可以编写:

1
[Ii]mg/

从文档中:

If the pattern ends with a slash, it is removed for the purpose of the
following description, but it would only find a match with a
directory. In other words, foo/ will match a directory foo and paths
underneath it, but will not match a regular file or a symbolic link
foo.

另外,您可以使用git-ls-files命令列出存储库中当前忽略的文件:

1
git ls-files --ignored --others --exclude-standard

如果--exclude-standard选项告诉Git考虑.git/info/exclude文件、存储库的.gitignore文件(在根目录和所有子目录中)以及全局.gitignore文件中定义的模式。


您需要编辑文件夹中的.gitignore文件并添加*以指定应忽略其中的所有文件。相关问题


您应该在Git存储库中创建一个.gitignore文件(将文件放在根文件夹中—这样更容易管理所有未跟踪的文件/文件夹),并将img文件夹添加到该文件中。

创建.gitignore文件

打开文件并添加此行:

1
img/

文件。