Git 中忽略某些文件或者文件夹

有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示“Untracked files …”,有强迫症的童鞋心里肯定不爽。

好在Git考虑到了大家的感受,这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore

忽略文件的原则是:

  1. 忽略操作系统自动生成的文件,比如缩略图等;
  2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

举个例子:

假设你在Windows下进行Python开发,Windows会自动在有图片的目录下生成隐藏的缩略图文件,如果有自定义目录,目录下就会有Desktop.ini文件,因此你需要忽略Windows自动生成的垃圾文件:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

然后,继续忽略Python编译产生的.pyc.pyodist等文件或目录:

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

加上你自己定义的文件,最终得到一个完整的.gitignore文件,内容如下:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build# My configurations:
db.ini
deploy_key_rsa

最后一步就是把.gitignore也提交到Git,就完成了!当然检验.gitignore的标准是git status命令是不是说“working directory clean”。

使用Windows的童鞋注意了,如果你在资源管理器里新建一个.gitignore文件,它会非常弱智地提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了。

小结

  1. 忽略某些文件时,需要编写.gitignore
  2. .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
  3. 从版本库中删除
    $ git rm test.txt
    rm 'test.txt'
    $ git commit -m "remove test.txt"

忽略文件夹写法

经测试发现,若要忽略一个文件夹下的部分文件夹,应该一个一个的标示。可能有更好的方法。
若test下有多个文件和文件夹。若要ignore某些文件夹,应该这个配置.gitignore文件。若test下有test1,test2,test3文件。要track test3,则.gitignore文件为:
test/test1
test/test2
!test/test3
若为:
test/
!test/test3 ,则不能track test3。
Git 中的文件忽略
1. 共享式忽略新建 .gitignore 文件,放在工程目录任意位置即可。.gitignore 文件可以忽略自己。忽略的文件,只针对未跟踪文件有效,对已加入版本库的文件无效。
2. 独享式忽略针对具体版本库 :.git/info/exclude针对本地全局:  git config --global core.excludefile ~/.gitignore
忽略的语法规则:
(#)表示注释
(*)  表示任意多个字符;
(?) 代表一个字符;([abc]) 代表可选字符范围
如果名称最前面是路径分隔符 (/) ,表示忽略的该文件在此目录下。
如果名称的最后面是 (/) ,表示忽略整个目录,但同名文件不忽略。
通过在名称前面加 (!) ,代表不忽略。
例子如下:
# 这行是注释
*.a                   # 忽略所有 .a 伟扩展名的文件
!lib.a                # 但是 lib.a 不忽略,即时之前设置了忽略所有的 .a
/TODO            # 只忽略此目录下 TODO 文件,子目录的 TODO 不忽略
build/               # 忽略所有的 build/ 目录下文件
doc/*.txt           # 忽略如 doc/notes.txt, 但是不忽略如 doc/server/arch.txt

本条目发布于 2014年10月23日。属于 Git分类。 作者是程序设计。

Git 中忽略某些文件或者文件夹相关推荐

  1. git学习六:git提交忽略不必要的文件或文件夹

    创建maven项目,使用git提交,有时需要忽略不必要的文件或文件夹,只保留一些基本. 例如如下截图,实际开发中我们只需提交:src,.gitignore,pom.xml 而自己项目文件一般都保留,但 ...

  2. 【git】git提交忽略不必要的文件或文件夹

    对于经常使用Git的朋友来说,.gitignore配置一定不会陌生.废话不说多了,接下来就来说说这个.gitignore的使用. 首先要强调一点,这个文件的完整文件名就是".gitignor ...

  3. Git中忽略文件权限或文件拥有者的改变

    2019独角兽企业重金招聘Python工程师标准>>> 解决办法: Git中可以加入忽略文件权限的配置,具体如下: $ git config core.filemode false ...

  4. git如何忽略已经提交的文件 (.gitignore文件无效)

    一. 问题 在初始化git仓库的时候没有创建.gitignore文件来过滤不必要提交的文件, 后来却发现某些文件不需要提交, 但是这些文件已经被提交了, 这时候创建.gitignore文件忽略这些文件 ...

  5. git提交忽略不必要的文件或文件夹

    首先要在文件目录下创建 .gitignore文件(和.git在同一级目录下),在里面写上过滤规则,规则如下,完成后保存,接着执行提交操作 常用的过滤规则 1./wj/   过滤整个文件夹 2.*.zi ...

  6. 如何在Git中忽略某些文件

    项目中经常会生成一些Git系统不需要追踪(track)的文件.典型的是在编译生成过程中 产生的文件或是编程器生成的临时备份文件.当然,你不追踪(track)这些文件,可以 平时不用"git ...

  7. Git中Add后对部分文件进行取消

    在执行git add .操作后,修改的文件添加到版本跟踪cache中. 如果此时不想对某些文件进行commit了,此时可以执行命令 : git reset [ FileName] 如果不指定文件名,则 ...

  8. git中如何合并某个指定文件?

    http://hi.baidu.com/configuration/item/50db923b522e8d4b3075a189 分支A_bracn和B_branch,只想将A_branch分支的某个文 ...

  9. git pull忽略指定文件_Git忽略提交规则

    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交. 简单来说一个场景:在你使用git add .的时候,遇 ...

最新文章

  1. MySQL数据库+命令大全+常用操作
  2. #include 和 #include 的区别
  3. win10 mysql 3534_win10 mysql 5.7.13 服务无法启动 3534
  4. 【Linux】一步一步学Linux——unset命令(202)
  5. C语言编写简单朗读发音小工具!!
  6. 2020-08-14 光纤通信第三章知识点整理
  7. 1057: [ZJOI2007]棋盘制作 - BZOJ
  8. 理解 Delphi 的类(十) - 深入方法[27] - 递归函数: 简单示例
  9. python+splinter实现12306网站刷票并自动购票流程
  10. python paas_Python paasword包_程序模块 - PyPI - Python中文网
  11. Windows下架设SVN服务
  12. 【TrollStore】苹果手机免费微信双开教程——国外的这款工具太绝了
  13. 房价收入比最高20倍 相关专家认为楼市泡沫已现
  14. symbian 如何在安装时备份sis文件
  15. SystemUi通知栏
  16. 小甲鱼零基础学习python_19 【pickle -- 腌制一缸泡菜】
  17. 2013年全国各大著名的IT公司薪资待遇大揭密
  18. 【表盘识别】基于Hough变换实现指针式仪表识别(倾斜矫正)
  19. 软件工程期末复习(超详细)
  20. 苹果不允许 iOS 应用内置购买(IAP)使用第三方支付方式,那么跨平台的支付怎么解决这个问题?

热门文章

  1. 三芯和四芯音频接口转换
  2. JavaScript的逆袭
  3. 如何学习新的IT技术
  4. 英语总结系列:每天怀揣一点激情
  5. 一文网尽CV/Robotics顶会论文常用高级词汇/句式!
  6. 不敢说最快!但是这款CRAS C700绝对是我们见过最漂亮的SSD
  7. fedora 安装与系统升级
  8. 游戏编程中的人工智能技术
  9. MySQL修改自增字段的自增值
  10. c# .net接口协定Contract