但行好事
莫论前程❤

git教程—-文件忽略

​ Git提供了文件忽略功能。当对工作区某个目录或某些文件设置了忽略后,再执行git status查看状态时,被忽略的文件即使存在也不会显示为未跟踪状态,甚至根本感觉不到这些文件的存在。

​ 创建一个名为.gitignore的文件(注意文件的前面有个点),把要忽略的文件写在其中,文件名可以使用通配符.

Git忽略语法

关于Git的忽略文件的语法规则:

  • 忽略文件中的空行或者井号(#)开始的行被忽略
  • 可以使用通配符.
    • 星号(*)代表任意多字符
    • 问号(?)代表一个字符
    • 方括号([abc])代表可选字符范围
  • 如果名称的最前面是一个路径分隔符(/), 表明要忽略在此目录下的该文件和文件夹,而子目录的文件不忽略
  • 如果名称的最前面没有路径分隔符(/), 表示忽略项目所有目录下的文件和文件夹/TODO
  • 如果名称的最后面是一个路径分隔符(/), 表明要忽略的是此目录下该名称的子目录,不忽略该名称的文件
  • 如果名称的最后面不加路径分隔符(/)的话,同名的文件和目录都忽略.
  • 如果名称的最前面和最后面都有路径分隔符,表明忽略此目录下的该名称的文件夹,不忽略该名称的文件和该名称的子文件夹
  • 如果名称的前后都没有路径分隔符, 表明忽略工程中所有该名称的文件和文件夹
  • 通过在名称的最前面添加一个感叹号(!),代表不忽略.

下面是文件忽略示例:

# 这里是注释行  -- 被忽略
*.a         # 忽略所有以.a为拓展名的文件
!lib.a      # 但是lib.a文件或目录不要忽略,即使前面设置了对*.a的忽略.
/TODO       # 只忽略此目录下的TODO文件,子目录的TODO文件不忽略.
build/      # 忽略所有build/目录下的文件
doc/*.txt   # 忽略文件如doc/notes.txt,但是文件如doc/server/arch.txt不被忽略
TODO:      # 忽略工程中所有名为TODO文件和名为TODO目录
TODO/:     # 只忽略工程中名为TODO目录,不忽略名为TODO文件
TODO/=TODO/* # 只忽略工程中所有名为TODO文件夹,但不忽略名为TODO文件(注意,不管是根目录下的 /TODO/ 文件夹,还是某个子目录下的文件夹 subdir/TODO,都会被忽略;)
/TODO/=/TODO/* # 只忽略项目根目录下的 /TODO/文件夹,不包括子文件夹和名为TODO的文件
**/node        # 忽略掉子目录下的node文件
/**/.idea      # 

Git使用规范之忽略模板

.gitignore文件 添加到版本库中.

如果不希望加到版本库里,也不希望.gitignore文件带来干扰,可以在忽略文件中忽略自己.

git add .gitignore
git commit -m "ignore object files"
[master b2asfdw1] ignore object files.
1 files changed,3 insertions(+), 0 deletions(-)
create mode 100644 src/.gitignore
  1. 文件.gitignore可以放在任何目录中

    文件.gitignore的作用范围是其所处的目录及其子目录,因此如果把刚刚创建的.gitignore移动到上一层目录(仍位于工作区内),也应该有效.

使用–ignored参数,可以在状态显示中看到被忽略的文件.

git status --ignored -s

想添加已经忽略掉的文件

git add -A   #无效
git add .    # 无效
git add -f hello.h  # 有效

忽略只对为跟踪文件有效.对于已加入版本库的文件无效

文件hello.h添加到版本库后,就不再受到.gitignore设置的文件忽略所影响了.对hello.h的修改都会立刻被跟踪到.

这是因为Git的文件忽略只是对未入库的文件起作用.

解决方案:
将添加到缓存区(暂存区)中的文件缓存删除掉.删除之后.gitignore文件就生效了.

    git rm -r --cached   文件名

偷懒式提交(使用-a参数提交,不用预先git add)

git commit -a -m "偷懒了"

本地独享式忽略文件

​ 文件.gitignore设置的文件忽略是共享式的,之所以称其为”共享式”.是因为.gitignore被添加到版本库后成为了版本库的一部分,共享给他人(克隆).这个忽略文件就会出现在他人的工作区中,在他人的工作区同样生效.

​ 独享式忽略有两种方式:

​ 一种是针对具体版本库的“独享式”忽略。即在版本库.git目录下的一个文件.git/info/exclude来设置文件忽略。

​ 另外一种是全局的“独享式”忽略。即通过Git的配置变量core.excludesfile指定的一个忽略文件,其设置的忽略 对所有本地版本库均有效。

赞(4) 打赏
未经允许不得转载:刘鹏博客 » git教程—-文件忽略
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏