我的Git存储库中有一个img文件夹。我想使用.gitignore排除文件夹中的图像。
我用cd 进入那个文件夹,mkdir .gitignore进入。但当我使用cx1〔2〕时,图像不被排除在外。我需要添加什么才能将它们从add中排除?
- 你能展示一下.gitignore文件的内容吗?
- .gitignore必须是答案中描述的文件,而不是目录,因为如果您执行了mkdir .gitignore。
.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即可:
如果要使排除不区分大小写,可以编写:
从文档中:
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文件放在子目录中,对吗?它不需要在根目录中?
- 正确-子目录中也可以有.gitignore文件。我没有说它必须在根目录中,但是如果从根目录开始,管理起来会更容易。然后可以将其他.gitignore文件放在需要覆盖根目录中定义的设置的子目录中。
- 很好,只是想检查一下。最初的措词是"你应该放在"这是我想要检查的,
您需要编辑文件夹中的.gitignore文件并添加*以指定应忽略其中的所有文件。相关问题
您应该在Git存储库中创建一个.gitignore文件(将文件放在根文件夹中—这样更容易管理所有未跟踪的文件/文件夹),并将img文件夹添加到该文件中。
创建.gitignore文件
打开文件并添加此行:
文件。