0


Git 的特殊配置文件

文章目录

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-library
    url = https://github.com/user/some-library.git

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

.gitconfig

作用

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

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

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

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

格式

示例

.git/config 示例:

[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[remote "origin"]
        url = [email protected]:foo/foo_svr.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
        remote = origin
        merge = refs/heads/main

~/.gitconfig 示例:

[url "[email protected]:"]
        insteadOf = https://gitlab.foo.com/
        insteadOf = http://gitlab.foo.com/
[user]
        email = [email protected]
        name = dablelv
[core]
        autocrlf = input
        editor = vim
[alias]
    co = checkout
    br = branch
    ci = commit

/etc/gitconfig 示例:

[diff "astextplain"]
        textconv = astextplain
[filter "lfs"]
        clean = git-lfs clean -- %f
        smudge = git-lfs smudge -- %f
        process = git-lfs filter-process
        required = true
[http]
        sslBackend = openssl
        sslCAInfo = C:/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt
[core]
        autocrlf = true
        fscache = true
        symlinks = 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

标签: git

本文转载自: https://blog.csdn.net/K346K346/article/details/143307956
版权归原作者 恋喵大鲤鱼 所有, 如有侵权,请联系我们删除。

“Git 的特殊配置文件”的评论:

还没有评论