Git文件.gitignore和.gitkeep用法解析

简介: Git文件.gitignore和.gitkeep用法解析
  • .gitignore:告诉 git 管理工具,需要忽略那些不需要被跟踪的文件或目录
  • .gitkeep:无意义,起到占位符的作用,git 在进行版本管理时,不会主动跟踪空目录,所以当项目中存在空目录的时候,git 会忽略空目录,如果需要将空目录上传到git仓库,一般需要在空目录下创建一个 .gitkeep 空文件起到占位的作用。在创建占位文件时,无意义的文件都是可以的,.gitkeep 文件只是一种约定俗成的规范名称而已。

.gitignore

.gitignore工作原理

在有的项目中,并不是所有的文件都需要上传到Git仓库进行版本管理的,这时我们就需要在项目中添加一个 .gitignore 文件告诉 git 那些文件或目录不需要被跟踪。

.gitignore 文件一般放在项目的根目录下对整个项目的文件进行匹配。也可以放到其他目录下,此时 .gitignore 文件以当前所在的路径为根路径进行模式匹配。

在创建 .gitignore 文件之前,假如已经把一些需要忽略文件添加到 git 版本管理中,那么即使我们在 .gitignore 文件中添加了这些文件的匹配规则,此时 git 不会匹配这些规则,对添加的文件进行过滤,因为此时这些文件已经被 git 进行管理了。所以在项目创建开始时就需要养成创建 .gitignore 的习惯。

.gitignore常用匹配规则

  • #:注释
  • \:转义符,使具有特殊意义的字符标识为普通字符
  • !:否定前缀,表示不忽略(跟踪)指定路径,可以将之前排除过滤的匹配文件再次包含进来。git 默认是对空目录不进行跟踪,可以使用 ! 前缀用来管理跟踪空目录,不过跟推荐使用 .gitkeep 占位文件来跟踪管理空目录。
  • /:目录分隔符
    • /位于开头或中间:匹配相对于 .gitignore的相对路径
      • /folder1/file1:匹配相对于 .gitignore 所在路径根目录下单的 /folder1/file1 文件
      • subfolder1/file1:匹配相对于 .gitignore 所在路径的 subfolder1/file1 文件,无论是根目录还是某个子目录下的 subfolder1/file1
    • /位于结尾:只匹配目录,否则同时匹配目录和文件。
  • *:通配多个字符,只能匹配到指定路径下的目录或文件,不能匹配子目录的内容。
    • /folder1/*
      • 仅能匹配到 /folder1/file1...,/folder1/subfolder1/...等文件
      • 不能匹配到 /folder1/subfolder1/file1...等文件
  • **:特殊匹配符,表示匹配所有目录:
    • **/subfolder1:匹配任意路径下的文件或目录 subfolder1,类似于 subfolder1
    • folder1/**/file1:匹配 folder1/file1, folder1/subfolder1/file1, folder1/subfolder1/subsubfolder1/file1等文件或目录
    • /flolder1/**:匹配 /flolder1 路径下所有文件和目录。
  • ?:通配单个字符匹配除了/之外的任意单个字符
  • []:范围匹配,匹配[] 指定范围内的任意单个字符

本地 .gitignore 规则

远程代码仓库的 .gitignore 文件一般匹配项目中需要过滤的文件。但在实际开发中,项目组的各个成员有可能使用的IDE、编译器,开发环境等的不同,可能会导致每一个人都可能在自己本地需要一套额外的匹配过滤规则,但这套匹配过滤规则是与自己本地绑定的,而不应该上传到远程仓库。

本地代码库 .gitignore 规则

可以将自己本地的,不需要上传到仓库的 .gitignore 匹配规则写入在 .git/info/exclude 文件中

全局 .gitignore 规则

全局 .gitignore 对本地的所有项目都生效

创建全局 .gitignore 文件来进行全局 .gitignore 匹配

git config --global core.excludesfile {
  {file_path}}

一般情况下,推荐将全局 .gitignore 文件放在用户 ~ 目录下,也命名为 .gitignore 文件名,具体可根据实际需要进行修改。
添加全局匹配规则时,到指定文件添加匹配规则即可。

修改 .gitconfig 来进行全局 .gitignore 匹配

.gitconfig 文件一般在用户 ~ 目录下,若无此文件,创建空文件即可。

.gitconfig中写入:

[core]
    excludesfile = {
  {file_path}}

通过修改配置文件配置全局 .gitignore 规则,不会自动创建指定文件,需要在指定路径下创建对应的文件。

那些文件需要被过滤

  • 日志文件
  • 缓存或临时文件
  • 具有敏感信息的文件,如密码,密钥,身份信息等
  • 编译文件,如 .class.o
  • 依赖目录,如 /venv, /node_modules
  • 编译输出文件,如 /dist, /public
  • 系统文件,如 .DS_Store
  • 项目目录下的压缩打包文件,如 .zip, .tar.gz
  • IDE或文本编译器的配置文件,如 .idea/, __pycache__
  • 大量数据集

有的人在使用 git 时,会将项目打包文件或项目依赖的数据集等大文件放在 git 中来进行版本管理,这样做是不对的,在使用 git 时,应满足:

  • 禁止push提交大文件
  • 少量多次commit

.gitkeep

git 版本管理一般不会跟踪空目录,所以在上传到远程仓库时,会发现所有的空目录都不存在。但有的空目录是保持目录结构和进行未来扩展的必要目录,所以也需要将这些空目录上传到远程仓库中。

根据 .gitignore 中的匹配规则可知,我们可以使用 ! 来指定相应的目录进行跟踪来上传远程目录,但在 .gitignore 中来指定空目录跟踪,既不方便也有可能造成歧义。所以不推荐使用本方法。

我们可以在空目录下创建空白的占位文件,这样该目录就不再是空目录的,git 也会进行相应的跟踪管理。理论上,无意义的占位文件都是可以的,开发人员一般使用 .gitkeep 作为空目录的占位文件,仅仅是一种约定俗成的规范。在实际项目中,可以根据项目组的要求使用指定的占位文件,若无要求,推荐使用 .gitkeep 保持良好的规范。

相关文章
|
5月前
|
开发工具 git 开发者
Git版本管理常见文件提交流程讲解
以上就是Git常见文件提交流程概述。掌握此流程对于任何使用Git进行版本控制和协同工作项目团队成员都至关重要。
225 13
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
3372 65
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
开发工具 git 索引
怎么取消对project.private.config.json这个文件的git记录
通过以上步骤,您可以成功取消对 `project.private.config.json`文件的Git记录。这样,文件将不会被包含在未来的提交中,同时仍保留在您的工作区中。
321 28
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
380 4
|
Serverless 对象存储 人工智能
智能文件解析:体验阿里云多模态信息提取解决方案
在当今数据驱动的时代,信息的获取和处理效率直接影响着企业决策的速度和质量。然而,面对日益多样化的文件格式(文本、图像、音频、视频),传统的处理方法显然已经无法满足需求。
487 4
智能文件解析:体验阿里云多模态信息提取解决方案
|
JSON Shell Linux
dockerfile 用法全解析
Dockerfile指令简介:`FROM`基于Alpine镜像;`WORKDIR`设置工作目录;`COPY`复制文件;`ADD`支持URL;`RUN`运行命令;`CMD`容器启动时执行;`ENTRYPOINT`与`CMD`组合执行;`EXPOSE`声明端口;`VOLUME`映射文件;`ENV`设置环境变量;`ARG`构建参数;`LABEL`元数据;`ONBUILD`触发命令;`STOPSIGNAL`停止信号;`HEALTHCHECK`健康检查;`SHELL`默认Shell。Alpine仅5M,小巧高效。
305 4
dockerfile 用法全解析
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
1243 0
|
5月前
|
开发工具 git
Git版本控制工具合并分支merge命令操作流程
通过以上步聚焦于技术性和操作层面指南(guidance), 可以有效管理项目版本控制(version control), 并促进团队协作(collaboration).
1207 15
|
8月前
|
安全 开发工具 git
git的常用操作命令
git的常用操作命令
538 57
|
6月前
|
存储 缓存 开发工具
Git stash命令的详细使用说明及案例分析。
通过上述案例,我们看到stash命令能够在不丢失进度的情况下,帮助开发者临时切换开发上下文,这在处理多个任务或紧急bug时特别有用。正确使用Git stash可以大大提高开发的灵活性和效率。
2106 0

推荐镜像

更多
  • DNS