「02」从0开始学习Git之.gitignore文件配置

前言

一般情况下,对于那些自动生成的文件(比如node_modules, .DS_Store),我们是不希望他们处于版本控制之下的。因此,我们可以在项目的根目录下添加一个.gitignore文件使得git不管理这些文件。
另外,我们也可以在项目的子目录中创建一个.gitignore文件,这样一来,该文件就只能影响该目录下的文件。这在某些情况下是很有用的例如,如果我们的项目是用多语言来编写的,那么他们应各自有一个不同的配置文件。

语法规范

  • 空行不匹配任何文件,因此它可以作为可读性的分隔符。
  • # 开头的行用作注释
  • 斜线 / 用作目录分隔符
  • * 匹配除斜杠以外的任何内容
  • ? 匹配除 / 之外的任何一个字符
  • ** 与完整路径名匹配的模式中的两个连续星号具有特殊含义
    • 前导 ** 后跟斜杠表示在所有目录中匹配
    • 尾随的 /** 匹配里面的所有内容
    • 斜杠后跟两个连续的星号,然后斜杠匹配零个或多个目录
    • 其他连续的星号被视为常规星号,将根据之前的规则进行匹配
  • ! 表示不忽略匹配到的文件或目录

关于路径指定
/dir/ 就是当前的dir文件夹,不包含子文件夹而
dir/ 不仅仅是当前的文件夹也包括子文件夹

配置文件示例

# 忽略所有目录下文件名为a的任何文件
a.*

# 忽略所有目录下后缀为txt的文件
*.txt

# 不忽略所有目录下的c.txt文件
!c.txt

# 忽略file目录下所有文件,包括其他目录下的file目录下的文件
# 例如 a/file下面的文件会被忽略
file/

# 只忽略当前file目录下所有文件,不包括其他目录下的file目录下的文件
# 例如 a/file下面的文件不会被忽略
/file

# 忽略任何位置file目录下的所有文件
file

# 忽略任何位置file目录下的所有文件 同file
**/file

# 忽略任何直接位于c目录下的file目录下的所有文件
**/c/file

# 同file/
file/**

# 忽略a/file,a/c/file,a/c/d/file 目录下的所有文件
a/**/file
复制代码

.gitignore配置发生冲突时,后面的配置会覆盖前面的配置

Github 上为开发者提供了各种环境以及各种编程语言的 gitignore 文件配置模版,可以根据自己的需求选用

注意⚠️

.gitignore问价中的配置只能影响那些当前还未交由git来管理的文件。如果其中某个文件已经被现有的仓库包含了,那么他的修改依然会被git记录。我们可以通过下面的方法来解决这个问题。

git update-index --assume-unchanged 文件名
// 恢复该文件的提交
git update-index --no-assume-unchanged 文件名
复制代码

总结

要写一个.gitignore文件,首先我们得了解.gitignore文件的语法规范,然后知道那些文件是要被我们忽略的,最后注意.gitignore文件只会管理还未提交到git的文件

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享