默认情况下,Git管理代码版本时会对所有文件进行跟踪,但有些时候我们并不希望项目中的一些文件上传到远程仓库或公共仓库中,例如密钥,个人隐私文件等。因此Git提供了两种忽略跟踪文件的方式.gitignore
文本文件与git rm
命令!
.gitignore
.gitignore
是一个位于仓库根目录的文本文件,它用于指定哪些文件或目录应该被Git忽略,不应该被纳入版本控制。你可以自由创建.gitignore
文件并在其中列出要忽略的文件、目录或匹配模式。
例如,假设你希望忽略名为config.ini
的文件和logs
目录,你可以在.gitignore
文件中添加以下内容:
config.ini /logs/
添加该.gitignore文件后会有如下效果:
.gitignore匹配规则
规则 | 匹配文件示例 | 解释 |
---|---|---|
**/logs | logs/debug.log logs/monday/foo.bar build/logs/debug.log | 双星号(** )表示匹配任何层级的目录或文件。 |
*.log | debug.log foo.log .log | 星号(* )表示匹配零个或多个字符。 |
debug?.log | debug0.log debugg.log | 问号(? )表示匹配一个字符。 |
debug[0-9].log | debug0.log debug1.log | 方括号([] )表示匹配指定范围内的单个字符。 |
/log | log/a.txt log/b.txt | 斜杠(/ )表示匹配的是目录。 |
!a.txt | b.txt c.txt d.txt | 感叹号(! )用于否定一个模式,即如果文件匹配了前面的模式,但同时也匹配了后面的否定模式,那么该文件将不会被忽略。 |
忽略已提交的文件
如果你想忽略之前已经提交到版本库的文件,具体步骤如下:
- 编辑
.gitignore
文件,添加要忽略的文件的规则。例如,将debug.log
添加到.gitignore
文件中。 - 运行
git rm --cached debug.log
命令将debug.log
文件从仓库中删除。--cached
选项会保留本地目录文件,如果你希望将文件从仓库和本地文件系统中都删除,可以省略--cached
选项。 - 运行
git commit"
命令,提交对.gitignore
文件的修改和文件删除的操作。
通过这些步骤,你可以忽略并停止跟踪之前已经提交的文件,如下所示:
提交被忽略的文件
如果你想强制将一个被忽略的文件提交到仓库中,可以使用git add -f
(或git add --force
)选项,例如你想提交被忽略的debug.log文件,可使用以下命令:
git add -f debug.log
然而,更好的做法应该在.gitignore
文件中定义一个例外规则,以便明确指定要提交的特定文件,这样做更清晰、不容易引起不必要的麻烦,如下:
*.log !debug.log
删除忽略的文件
如果你想从工作目录中删除未跟踪的文件和目录,以清理工作区,你可以使用以下命令:
git clean [-n|f|d|x]
-n
或--dry-run
(可选):试运行,将显示哪些文件将被删除,并不会实际删除。-f
或--force
(可选):强制执行删除操作。-d
(可选):指定删除未跟踪的目录。-x
(可选):指定删除.gitignore
忽略规则中指定的文件和目录。
拓展
前端的世界总是在不断变化,作为开发者,我们需要保持好奇心和学习热情,不断探索新的技术,只有这样,我们才能在这个快速发展的时代中立于不败之地。介绍一款程序员都应该知道的软件JNPF快速开发平台,平台非常好用,是功能的集大成者,任何信息化系统都可以基于它开发出来。
这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,实现快速开发,提升工作效率;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3。如果你有闲暇时间,可以做个知识拓展。