如何在文件夹中使用.gitignore?

7

我在我的git存储库中有一个img文件夹。我希望使用.gitignore来排除该文件夹中的图像。

我使用cd <文件路径>进入该文件夹并使用mkdir .gitignore。但是当我将其add到git时,图像不会被排除。我需要添加什么以使它们从add中排除?


你能展示一下你的 .gitignore 文件里的内容吗? - Gary Ewan Park
3
.gitignore 必须是一个文件,如答案所述,而不是一个目录,如果您执行了 mkdir .gitignore - lucash
4个回答

8
.gitignore文件仅凭其存在没有任何影响。一个空的.gitignore文件只是一个空文件,没有其他作用。 Git读取.gitignore文件的内容,并使用其中包含的模式来决定将哪些文件放入版本库中,哪些文件忽略。有关.gitignore文件格式的更多信息,请参阅.gitignore文件格式
与其他回答此问题的说法相反,您可以在存储库的任何目录中拥有.gitignore文件,而不仅仅是在根目录中。
当它决定如何处理新文件(跟踪它还是忽略它)时,它会结合来自多个gitignore源的信息:
- 命令行; - 与该文件位于同一目录中的.gitignore文件以及其父目录内的.gitingore文件; - 本地仓库忽略文件(未推送到远程仓库)$GIT_DIR/info/exclude; - 指定在~/.gitconfig中的全局忽略文件;它适用于用户的所有本地仓库。
回到您的具体情况,如果您想告诉Git忽略img目录中的文件,可以在文件img/.gitignore中放置*
另一种选择是将<path-to-img>/*放入存储库根目录下的.gitignore文件中。将<path-to-img>替换为从存储库根目录到img文件的实际路径。 .gitignore文件的内容仅由git add使用。如果文件已经在存储库中,则在.gitignore中添加与其名称匹配的模式不会使Git从现在开始忽略它。必须手动从存储库中删除它(并提交删除),否则Git将继续跟踪其内容。
在您的情况下,需要运行以下命令:
cd <path-to-img-directory>
echo "*" >> .gitignore
git rm *
git add .gitignore
git commit

8
你的.gitignore文件应该首先位于仓库的根目录中,以此来更容易地管理它。之后,你可以在需要覆盖根.gitignore文件中定义的模式的子目录中放置单独的.gitignore文件。
要排除img目录,只需将以下行添加到.gitignore中即可:
img/

如果您想让排除操作不区分大小写,可以改为编写以下代码:

[Ii]mg/

来自文档

如果模式以斜杠结尾,则为了以下描述的目的而将其删除,但它只能与目录匹配。换句话说,foo/将匹配目录foo及其下面的路径,但不会匹配常规文件或符号链接foo

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

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

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


可以把.gitignore文件放在子目录里面,对吧?它不一定要放在根目录下面? - Gary Ewan Park
没错 - 你可以在子目录中放置.gitignore文件。我并没有说它必须放在根目录中,但如果你从那里开始,管理起来会更容易。然后,你可以在需要覆盖根目录中定义的设置的子目录中放置其他.gitignore文件。 - Enrico Campidoglio
完美,只是想确认一下。原本的措辞是“你应该放置”,这就是我想确认的内容。 - Gary Ewan Park

0

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


0
你应该在Git代码库中创建一个.gitignore文件(将文件放置在根目录中,这样更容易管理所有未跟踪的文件/文件夹),并将你的img文件夹添加到该文件中。
创建一个.gitignore文件。
打开文件并添加此行:
img/

到文件中。


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