.gitignore文件用法如何配置(笔记)

.gitignore文件是在git提交的时候用来屏蔽某些你不想提交上去的文件。
项目开发过程中,有时候不想把一些文件(如中间文件/编译文件等)提交到git上。这个时候就由.gitignore文件来筛选出不想提交的文件。所筛选的文件/夹将不会被追踪(tracked),push的时候也不会上传到git上。

**以下用法配置是单片机C开发项目中的

创建

我们需要在提交Git之前,需要自己创建一个.gitignore文件,由于Windows下创建文件必须键入文件名,而要创建的.gitignore文件是没有文件名的,所以我们可以使用move命令来实现,打开Git Bash ,使用mv gitignore.txt .gitignore,然后用编辑器编辑这个文件。

语法规范

  • #:开头的行表示注释行
  • *:用来匹配零个或多个字符
    *.a表示忽略.a文件;
    *.[oa]表示忽略所有以.a和.o结尾的文件,*~忽略所有以~结尾的文件;
    []用来匹配括号内的任一字符,如[abc],也可以在括号内加连接符,如[0-9]匹配0至9的数;
    ?用来匹配单个字符;
  • !:用来否定忽略
    比如前面用了*.txt,然后使用!*a.txt,则这个a.txt不会被忽略
  • /:
    正斜杠在前:匹配项目跟目录;如/bin表示忽略根目录下的bin文件,/bsp表示忽略根目录下的bsp文件夹,但不忽略子目录里的user/bsp文件夹;
    正斜杠在后:匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;如bsp/表示忽略bsp文件夹里的所有文件;
  • **:匹配多级目录,可在开始,中间,结束;

忽略优先级

在.gitignore文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低):

  1. 从命令行中读取可用的忽略规则
  2. 当前目录定义的规则
  3. 父级目录定义的规则,依次递推
  4. $GIT_DIR/info/exclude 文件中定义的规则
  5. core.excludesfile中定义的全局规则

常见例子

1、忽略.bin文件

#忽略所有的.bin文件
*.bin

2、否定忽略 link.bin

#不忽略目录下的link.bin
!link.bin
#不忽略obj目录下的link.bin
!/obj/link.bin

3、忽略某目录.txt, 不包括子目录.txt

#忽略doc/notes.txt, 不包括doc/server/arch.txt
doc/*.txt

4、忽略某目录内所有的.pdf 文件

#忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf

5、忽略当前目录.c,不忽略子目录.c

#忽略 cat.c,不忽略 build/cat.c
/*.c

6、忽略当前路径下的Proj文件夹,该文件夹下的所有内容都会被忽略

#忽略当前路径下的Proj文件夹,该文件夹下的所有内容都会被忽略
Proj/

7、忽略Proj文件夹子目录文件夹

#忽略Proj文件夹子目录Obj文件夹里的所有文件
Proj/Obj/

8、忽略根目录下的某文件

#忽略根目录下的bin文件
/bin:

9、忽略/foo, a/foo, a/b/foo等

#忽略/foo, a/foo, a/b/foo等
**/foo:

10、忽略a/b, a/x/b, a/x/y/b等

#忽略a/b, a/x/b, a/x/y/b等
a/**/b:

11、忽略当前路径的某文件

#忽略当前路径的 config.php 文件
config.php:

.gitignore规则不生效

一、.gitignore只能忽略那些原来没有被追踪(tracked)的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

1. git rm -r --cached .
2. git add .
3. git commit -m 'update .gitignore'

二、你想添加一个文件到Git,但发现添加不了,原因是这个文件被.gitignore忽略了:

$ git add App.class
The following paths are ignored by one of your .gitignore files:
App.class
Use -f if you really want to add them.

如果你确实想添加该文件,可以用-f强制添加到Git:

$ git add -f App.class

三、或者你发现,可能是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:

$ git check-ignore -v App.class
.gitignore:3:*.class    App.class

Git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。

忽略已提交文件中的变化

临时忽略变更

在开发阶段,有时候需要临时忽略本地仓库中已提交的文件的变更。例如,你的配置文件与本机的工作环境或者项目配置有关,那么这个操作就非常有用:

git update-index --skip-worktree <file>

当然也可以恢复文件的追踪:

git update-index --no-skip-worktree <file>

也可以通过以下方式进行。这主要是为了防止文件被开发者修改。
关闭变更追踪:

git update-index --assume-unchanged <file>

恢复变更追踪:

git update-index --no-assume-unchanged <file>

永久忽略文件变更

如果一个文件已经被 Git 跟踪,那么再将这个文件添加到 .gitignore 中并不会忽略文件变更。你还需要从Git 暂存区(index)中移除这个文件的信息,步骤如下:

  1. 在.gitignore中添加这个文件
  2. 从暂存区移除文件信息:
git rm --cached  <file>
  1. 提交删除文件和更新的.gitignore到您的仓库

注:以上步骤不会从系统中删除文件,只是告诉Git以后忽略该文件的变更


以上是最近在用.gitignore文件时查阅的一些资料,感谢以下大神的帖子:

https://blog.csdn.net/weixin_45318845/article/details/120740012
https://blog.csdn.net/wnvalentin/article/details/105448739

如有描述有误的地方欢迎大家指出,感谢!

.gitignore文件用法及如何配置相关推荐

  1. Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue

    Vue 单文件组件 传统组件的问题和解决方案 1. 问题 1. 全局定义的组件必须保证组件的名称不重复 2. 字符串模板缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 3. 不支持 CS ...

  2. Android Studio SVN配置忽略文件 1.用Android Studio创建一个项目,会在根目录和Module目录下自动生成.gitignore文件,貌似是Git的配置文件,

    Android Studio SVN配置忽略文件 1.用Android Studio创建一个项目,会在根目录和Module目录下自动生成.gitignore文件,貌似是Git的配置文件,和SVN没有关 ...

  3. git中配置.gitignore文件

    .gitignore文件是git中常见的配置文件,用以管理在git文件管理中需要被忽略的文件,使git管理文件更加方便和自由. 文件中的配置如下,根据文件情况具体添加 .idea/ /idea/ .v ...

  4. 文件夹去掉git版本控制_git 从版本控制中删除文件及.gitignore的用法

    刚开始用git的时候,喜欢用git add *把所有文件都加入到版本管理中. 后来发现,因为我在virtualenv下面创建的内容,在跑测试的时候,会产生__pycache__文件夹,里面的很多东西都 ...

  5. .gitignore文件 —— git忽略文件

      .gitignore文件用来忽略被指定的文件或文件夹的改动,被记录在.gitignore文件里的文件或文件夹,是不会被git跟踪到的,换句话说,被忽略的文件是不会被放入到远程仓库里的. 如果文件已 ...

  6. gitignore 文件生效办法

    .gitignore 可以添加一些不加入git版本控制的文件 比如一些测试文件.因人而异的配置信息等等 .gitignore 文件展示如下 /.idea/target//.classpath /.pr ...

  7. 鸟哥的Linux私房菜(基础篇)- 第六章、Linux 的文件权限与目录配置

    第六章.Linux的文件权限与目录配置 最近更新日期:2009/08/18 Linux最优秀的地方之一,就在于他的多人多任务环境.而为了让各个使用者具有较保密的文件数据,因此文件的权限管理就变的很重要 ...

  8. $git学习总结系列(4)——gitignore文件

    有时候工作区中会有我们创建的一些密码配置文件,或者自动生成的一些临时文件,比如python代码编译产生的.pyc文件和java代码编译产生的.class文件等,我们在提交代码的时候没有必要把这些文件也 ...

  9. git 使用详解(3)—— 最基本命令 + .gitignore 文件

    Git 基础 本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置:开始或停止跟踪某些文件:暂存或提交某 ...

最新文章

  1. OpenCASCADE:可视化简介
  2. 我的工作日报 - 2020-9-16 星期三
  3. 在新建FileInputStream时使用当前相对路径或者绝对路径作为参数的问题
  4. 登录之回车登录和记住密码
  5. python取出满足条件的行_numpy ndarray 取出满足特定条件的某些行实例
  6. linux新建两个工作组,linux添加工作组
  7. Hexo框架下用NexT(v7.0+)主题美化博客
  8. Jmeter的基本使用
  9. 用计算机怎样搜wifi网,笔记本电脑搜索不到无线网络(Wifi)怎么办
  10. Android 面试题(答案最全) 转:http://www.jobui.com/mianshiti/it/android/2682/
  11. js数组对象重复的数据添加标识
  12. vmware启动sda assuming drive cache黑屏
  13. 淮安万达机器人_淮安万博机器人 万达上班时间【输入网址YB7888.vip】angmi_PP视频搜索-PP视频-原PPTV聚力视频...
  14. 服务器硬盘热插拔检测不到,用过这么多年才知道, 原来有的设备是真的不能热插拔的!...
  15. xp如何开启系统打印服务器配置,XP系统设置打印机共享的方法有哪些
  16. Netty下的消息群发
  17. 福利贴:最全实时音视频开发要用到的开源工程汇总
  18. 游标v_cur的%notfound
  19. 震惊!这个链接里面竟然有
  20. [附源码]java毕业设计医院档案管理系统

热门文章

  1. BiFunction示例
  2. python里isalpha函数_Python isalpha函数判断字母
  3. 什么是基线(Baseline)
  4. 五、nrf52832的timer定时器
  5. 苹果开发者不可不知的“苹果小型开发者佣金计划”
  6. 【iOS 开发】进度条控件 UIProgressView
  7. 彩蛋!springboot自定义banner
  8. 华为机试:路灯照明问题
  9. CnOpenDataA股上市公司交易所监管措施数据
  10. label:for属性和form属性