
Gitignore 是 Git 中用于从版本控制中排除文件和目录的强大工具。它能防止不必要的文件被跟踪,从而保持版本库的整洁和有序。
不过,在某些情况下,Gitignore 可能无法按预期工作,导致文件仍被跟踪或被忽略的文件未被排除。
在本文中,我们将深入了解 Gitignore 的基础知识、排查 Gitignore 问题、探索 Gitignore 高级技术并解决不同场景下的 Gitignore 问题。
Gitignore 是一个配置文件,包含一系列模式,指定 Git 应忽略的文件或目录。
它采用的语法包括通配符 (*)、否定 (/) 和注释 (#)。Gitignore 文件可以是本地、全局或仓库级的,取决于它们在项目中的位置。
要创建 Gitignore 文件,请在 Git 仓库的根目录下创建一个名为 .gitignore 的纯文本文件。
然后使用 Gitignore 模式指定要忽略的文件或目录。例如,要忽略所有 .log 文件和名为 node_modules 的目录,可以创建一个内容如下的 Gitignore 文件:
*.log node_modules/
这将阻止 Git 追踪任何带有 .log 扩展名和 node_modules 目录的文件。
有几种常见情况会导致 Gitignore 无法按预期运行。让我们来探讨其中一些,并学习如何修复。
有时,你可能会在文件已被跟踪或提交后才将其添加到 Gitignore。在这种情况下,即使 Gitignore 中列出了这些文件,Git 也会继续跟踪它们。
要取消跟踪或删除已被跟踪的文件,可以分别使用以下命令:
# Untrack files git rm --cached <file> # Remove files git rm <file>
例如,如果要解除对名为 “config.ini” 的文件的跟踪,可以运行以下命令:
git rm --cached config.ini
这将从 Git 缓存中移除该文件,防止将来被跟踪。
修改 Gitignore 文件后,需要更新 Git 缓存以反映这些修改。这可以使用 “git add” 命令来完成。
例如,如果在 Gitignore 中添加了忽略 .log 文件的新模式,就可以用下面的命令更新 Git 缓存:
git add .gitignore
Gitignore 模式默认区分大小写,这意味着 File.txt 和 file.txt 将被视为两个不同的文件。但有些操作系统(如 Windows 和 macOS)的文件系统不区分大小写,这会导致 Gitignore 出现问题。
要解决 Gitignore 模式中的大小写敏感性问题,可以使用 git config 命令将 core.ignorecase 配置选项设置为 false,在终端运行以下命令:
git config core.ignorecase false
这将使 Gitignore 模式对项目的大小写敏感,确保字母大小写不同的文件被视为不同的文件。
如果在版本库的不同目录下有嵌套的 Gitignore 文件,Git 可能无法正确理解模式,导致 Gitignore 无法正常工作。
要解决这个问题,你可以在 Gitignore 模式中使用 !(感叹号)字符来指定例外情况。
例如,如果你在名为 docs 的目录下有一个嵌套的 Gitignore 文件,而你又想排除一个名为 important.docx 的文件被忽略,你可以在父 Gitignore 文件中添加以下模式:
docs/* !docs/important.docx
这将确保 important.docx 文件不会被忽略,即使 docs 目录已被忽略。
相信你现在已经修正了 Gitigoner 的错误。最后,让我们来探讨一下如何为所有 Git 项目创建一个全局 Gitignore 文件。
在多个 Git 仓库中工作时,为每个仓库维护一个独立的 Gitignore 文件会变得很乏味。幸运的是,Git 提供了一种设置全局 Gitignore 文件的 *** ,该文件可用于所有 Git 仓库。
设置全局 Gitignore 文件的步骤如下:
之一步是在系统中创建全局 Gitignore 文件。可以使用记事本或 Vim 等文本编辑器创建文件。
也可以使用命令行创建文件,运行下面的命令:
touch ~/.gitignore_global
这将在电脑的主目录下创建一个名为 .gitignore_global 的空文件。
创建全局 Gitignore 文件后,就可以使用与普通 Gitignore 文件相同的语法添加模式了。
例如,要忽略扩展名为 .html 的所有文件,可以在文件中添加以下一行:
*.html
您可以在文件中添加任意多个模式(每行一个模式)。
最后一步是告诉 Git 使用全局 Gitignore 文件。执行以下命令即可:
git config --global core.excludesfile ~/.gitignore_global
这条命令会告诉 Git 使用 ~/.gitignore_global 作为全局 Gitignore 文件。你只需运行一次这条命令,Git 就会记住你在系统中所有仓库的配置。
有了全局 Gitignore 文件,你就可以在其中添加将在所有版本库中被忽略的模式了。这样可以省去为每个版本库维护独立 Gitignore 文件的大量时间和精力。
Gitignore 是一个强大的工具,用于控制 Git 仓库中哪些文件和目录会被忽略。不过,了解它的行为和局限性对避免出现忽略文件或意外行为非常重要。
了解 Gitignore 的工作原理并遵循更佳实践,就能有效管理 Git 仓库中被忽略的文件,改善。
现在轮到你了: 您遇到过这个问题吗?你是如何解决的?您还使用过本文未涉及的其他 *** 吗?请在评论中告诉我们!
使用宝塔面板,您可以快速地创建一个FTP管理账户,对网站文件进行管理。但有必要提醒大家的是,使用FTP远不如使用SFTP安全,你可以查看文章“”进一步了解两者之间的差异。 此外,宝塔面板的文件管理模块其实已经能够满足站长的大部分文件管理需求。当然,如果你非得要使用FTP管理服务器文件,可以参照以下...
宝塔面板设置主要涉及的是宝塔控制后台自身的参数,包括诸如面板的开关、自动更新及SSL、面板端口设置等。虽然这部分不涉及服务器自身的管理,但对宝塔面板的设置也有其重要。 特别是面板端口、安全入口及面板密码等涉及安全的参数设置。 启动和关闭面板 如果你长时间无需使用到宝塔面板,可以考虑...
经过几个小时的努力工作后,您是否感到眼睛疲劳或难以阅读代码?许多程序员在开始头疼之前从没想过要切换字体。 如果您经常发现在尝试扫描一千行代码时眼睛模糊不清,或者在停止编码数小时后头疼,那么可能是时候尝试一种新字体了。即使您没有遇到这些症状,设计良好的字体通常也比默认系统字体具有更好的可读性。...
Node.js和PHP是Web开发工作中常用的两种基本Web技术。两者都为服务器端开发做出了贡献,Node.js甚至同时服务于客户端和服务器端开发。 PHP已经为开发人员服务了近3年,现在它为78%的网络提供支持。相比之下,Node.js相对较新,但扩展速度非常快,由于其全栈开发能力而成为流行...
市场上有各种各样的数据库可供选择,用户通常可以仔细考虑PostgreSQL与SQL Server,以便为他们的用例找出更好的选择。使用PostgreSQL进行运营的组织可能希望切换到像Microsoft SQL Server这样的数据库,因为它主要迎合不同的数据仓库解决方案、电子商务和其他业务线...
您可能听说过SaaS,您可能听说过PaaS和IaaS,但您听说过函数即服务 (FaaS) 吗? FaaS市场正在快速增长。根据Allied Market Research的数据,2018年市场价值 。预计到2026年,这一数字将增长到240亿美元——这意味着该行业将从2020年到2026年以2...