当前位置: 首页 > news >正文

Git 的特殊配置文件

文章目录

  • 1.前言
  • 2.Git 标准配置文件
    • .gitignore
      • 作用
      • 格式
      • 示例
    • .gitattributes
      • 作用
      • 格式
      • 示例
    • .gitmodules
      • 作用
      • 格式
      • 示例
    • .gitconfig
      • 作用
      • 格式
      • 示例
  • 3.非 Git 标准约定文件
    • .gitkeep
      • 简介
      • 示例
    • .gitacls
      • 作用
      • 格式
      • 示例
  • 参考文献

1.前言

Git 是一个强大的版本控制系统,它使用多个配置文件来管理项目的行为和设置。

2.Git 标准配置文件

.gitignore

作用

.gitignore 文件用于指定哪些文件或目录应被 Git 忽略,不进行版本控制。这有助于避免将不必要的文件(如临时文件、编译生成的文件、日志文件等)添加到版本库中。

格式

  • 每一行指定一个要忽略的模式。
  • 可以使用通配符:* 匹配零个或多个字符。? 匹配一个字符。** 匹配任意级别的目录。
  • 以 / 开头表示相对于仓库根目录的路径。
  • 以 # 开头的行是注释。

示例

# 忽略所有的日志文件及目录
*.log
/log/# 忽略临时文件及目录
*.tmp
/temp/# 忽略编译生成的文件
*.exe
/build/
/dist/# 忽略根目录下的 .env 文件
/.env# 忽略多层级目录
# 忽略 a/b, a/x/b, a/x/y/b 等
/a/**/b

.gitattributes

作用

.gitattributes 文件用于定义 Git 在处理特定文件或目录时的行为。可以设置文件的文本编码、行结束符、合并策略、差异输出等。

格式

  • 每一行指定一个路径模式和一个或多个属性。
  • 属性名可以是标准属性(如 text、binary、diff)或自定义属性。

示例

# 将所有的文本文件处理为 LF
*.txt text eol=lf# 将 PNG 文件标记为二进制文件
*.png binary# 禁用某些目录中文件的 diff 输出
internal/app/pb/** -diff# 对于特定类型的文件使用自定义的 diff 工具
*.md diff=markdown

.gitmodules

作用

.gitmodules 文件用于管理 Git 子模块的配置信息。

子模块是指在一个 Git 仓库中嵌套的另一个 Git 仓库。此文件包含子模块的路径和 URL,允许您在主仓库中引用其他仓库。

git submodule add https://github.com/XXX [<path>]

默认情况下,子模块会将子项目放到一个与仓库同名的目录中,即“XXX”。

如果你想要放到其他地方,那么可以在命令结尾添加一个不同的路径 path。如果这时运行 git status,注意到新的.gitmodules文件。该配置文件保存了项目 URL 与已经拉取的本地目录之间的映射。

格式

  • 使用 [submodule “path”] 格式来定义子模块。

示例

[submodule "libs/some-library"]path = libs/some-libraryurl = https://github.com/user/some-library.git[submodule "libs/another-library"]path = libs/another-libraryurl = https://github.com/user/another-library.git

.gitconfig

作用

.gitconfig 文件是 Git 的配置文件,它用于配置 Git 的行为和用户信息,如用户名、邮箱、颜色输出、别名等。

可通过 git config 命令进行配置,并将配置存储至 .gitconfig 文件。

根据其位置和作用级别,.gitconfig 文件可以分为三种主要类型:

  • 仓库级别的配置(.git/config)具有最高优先级。
  • 用户级别的配置(~/.gitconfig)次之。
  • 系统级别的配置(/etc/gitconfig)具有最低优先级。

格式

示例

.git/config 示例:

[core]repositoryformatversion = 0filemode = falsebare = falselogallrefupdates = truesymlinks = falseignorecase = true
[remote "origin"]url = git@gitlab.foo.com:foo/foo_svr.gitfetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]remote = originmerge = refs/heads/main

~/.gitconfig 示例:

[url "git@gitlab.foo.com:"]insteadOf = https://gitlab.foo.com/insteadOf = http://gitlab.foo.com/
[user]email = dablelv@foo.comname = dablelv
[core]autocrlf = inputeditor = vim
[alias]co = checkoutbr = branchci = commit

/etc/gitconfig 示例:

[diff "astextplain"]textconv = astextplain
[filter "lfs"]clean = git-lfs clean -- %fsmudge = git-lfs smudge -- %fprocess = git-lfs filter-processrequired = true
[http]sslBackend = opensslsslCAInfo = C:/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt
[core]autocrlf = truefscache = truesymlinks = false
[pull]rebase = false
[credential]helper = manager
[credential "https://dev.azure.com"]useHttpPath = true
[init]defaultBranch = master

3.非 Git 标准约定文件

.gitkeep

简介

Git 默认是不跟踪空文件夹和空目录的,所以要想推送空文件夹或空目录,就必须在里面放一个文件,即使是空文件也行,但必须要有。

于是,就有了一个不成文的规定,通常我们放一个名为 .gitkeep 的文件到空文件夹或空目录,以此实现其 Git 跟踪。该规定并没有在官方文档中定义,只是一个公认的约定罢了。

.gitkeep 实则是一个空的占位文件,并没有其它特性,通俗点讲,.fu*k 可以实现和 .gitkeep 相同的功能。

示例

假设您有一个项目目录结构如下:

my_project/
├── src/
└── empty_folder/

如果您希望在 Git 中保留 empty_folder,可以在该目录中创建一个 .gitkeep 文件:

my_project/
└── empty_folder/└── .gitkeep

.gitacls

作用

.gitacls 文件用于定义 Git 仓库的访问控制列表(ACL,Access Control List)。虽然这个文件并不是 Git 的标准部分,但在一些特定环境中,特别是与安全性和权限管理相关的项目中,可能会使用此文件来控制对仓库中文件或目录的访问权限。

格式

具体内容和格式取决于团队的约定。

示例

# 定义哪些用户或组可以访问特定目录
# 例如,允许 user1 和 user2 访问 src/ 目录
src/ user1 user2

参考文献

Git - gitignore Documentation
Git - gitattributes Documentation
Git - gitmodules Documentation

http://www.lryc.cn/news/475639.html

相关文章:

  • 数据的表现形式(1)
  • 《高频电子线路》—— 调幅
  • ubuntu22.04安装ROS2Humble
  • 软中端,硬中断(学习笔记)
  • scIDST:弱监督学习推断单细胞转录组数据中的疾病进展阶段
  • Linux 下执行定时任务之 Systemd Timers
  • flutter 专题二 Flutter状态管理之Riverpod 0.8.4
  • 【Linux】从零开始使用多路转接IO --- poll
  • Docker配置宿主机目录和网络映射
  • 第十七课 component组件解析
  • 求余和求模是不是一样的,就要看看计算机中的 fix 和 floor 区别
  • 00 递推和递归的核心讲解
  • 深度学习常用开源数据集介绍【持续更新】
  • rust编写的系统监测器
  • 【MyBatis源码】CacheKey缓存键的原理分析
  • 034_Structural_Transient_In_Matlab结构动力学问题求解
  • 项目模块十五:HttpResponse模块
  • 推荐一款优秀的pdf编辑器:Ashampoo PDF Pro
  • 【系统架构设计师】2024年上半年真题论文: 论模型驱动架构设计方法及其应用(包括解题思路和素材)
  • 国内短剧源码短剧系统搭建小程序部署H5、APP打造短剧平台
  • Java集合框架面试指南
  • 八、MapReduce 大规模数据处理深度剖析与实战指南
  • 开源免费的API网关介绍与选型
  • OpenCV视觉分析之目标跟踪(5)目标跟踪类TrackerMIL的使用
  • 二级列表联动
  • 「C/C++」C++ 标准库 之 #include<sstream> 字符串流库
  • 深入理解跨域资源共享(CORS)安全问题原理及解决思路
  • 【汽车租聘管理与推荐】Python+Django网页界面+推荐算法+管理系统网站
  • Linux常见指令大全(必要+知识点)
  • iOS用rime且导入自制输入方案