Git是跟踪项目中所有文件的好工具,

但是,您会希望在项目的整个生命周期中不要跟踪某些文件及其变更

  • 系统文件(i.e. Mac系统的.Ds_Store)
  • 应用程序配置文件(i.e. app.config, .env)
  • 构建组件(i.e. *.pyc)
  • 安装的依赖(i.e. node_modules)
  • 个人文件(i.e. todo.txt)
  • 应用程序数据和日志(i.e. .log,.sqlite)

Git中gitignore概念:以.gitignore文件定义哪些文件将被Git排除跟踪, 被.gitignore匹配到的文件将不会显示在Git的Untracked files列表。

使用.gitignore防止跟踪文件

.gitignore文件控制Git仓库中应排除跟踪的文件(可由文件类型、路径、通配符等确立)。

  1. Visual Studio

    使用VS为项目创建(或连接)代码仓库时,Visual Studio自动在仓库中创建.gitignore文件
  2. 下载.gitignore模板

    从https://github.com/github/gitignore下载特定项目类型的.gitignore文件模板,修改以充分适配你的项目

Git将.gitignore应用于文件夹及其子文件夹,建议您将.gitignore放在存储库的根文件夹中,以免造成混淆。

实践中有时会在项目子目录嵌套定义.gitignore文件, 虽然不常见,但对于有特定规则的子目录,嵌套定义.gitignore文件有用。

自定义.gitignore

只要你修改了.gitignore文件,Git立即开始忽略这些文件;如果你希望团队成员都忽略相同的文件,请提交这次git变更。

.gitignore中的每一行都排除一个文件或一组(与模式匹配的)文件, .gitignore语法很灵活:

# 忽略单个文件
mycode.class # 忽略整个目录
/mydebugdir/ # 忽略文件类型
*.json # 将前置规则取反,这个文件将被Git跟踪
!package.json

Windows使用者注意:.gitignore文件中的路径使用正斜杠分隔符,而不是反斜杠

已经提交的文件,再忽略变更

临时忽略变更

在开发阶段,有时候要临时忽略文件变更,特别是你拿到源代码需要针对本地环境做一些修改有用

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

恢复文件追踪

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

永久忽略文件变更

如果文件已经被Git跟踪,再将这个文件添加到.gitignore文件并不会忽略文件变更。

你需要从Git Index中移除这个文件的信息:

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

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

附1. 仅在个人系统中忽略文件

.gitignore文件被提交并推送之后,就会在团队共享。

若只想在你的系统上排除文件,请编辑仓库中的.git/info/exclude文件: 修改这个文件不会共享给其他人,这个动作只对这个仓库有效

附2. 系统中跨仓库忽略文件

利用git config工具建立全局.gitignore文件,

git config core.excludesfile C:\Users\frank\.gitignore_global

这个操作帮助你全局忽略绝不会提交的文件类型,比如编译文件

总结

通过本文你将学习到:

  1. 使用.gitignore阻止Git跟踪文件
  2. 对已提交的文件忽略变更

    附1. 只在你的系统上忽略文件

    附2. 在你的系统上跨仓库忽略文件

看到了Git为我们提供一种机制,告诉我们不应在存储库中跟踪哪些文件,

这是一项强大的功能,可提供丰富的语法以及层次结构,以更好地控制哪些文件被忽略以及哪些文件未被忽略。

没用过.gitIgnore还敢自称高级开发?的更多相关文章

  1. 盘点国内程序员不常用的热门iOS第三方库:看完,还敢自称”精通iOS开发”吗?【转载】

    综合github上各个项目的关注度与具体使用情况,涵盖功能,UI,数据库,自动化测试,编程工具等类型,看完,还敢自称”精通iOS开发”吗? https://github.com/syedhali/EZ ...

  2. 近期Java高级开发岗面试总结

    原文出处:公众号:编程大道 作者:walking 近期Java高级开发岗面试总结 哈喽大家好,我是walking,这是我的公众号:编程大道. 很久没和大家见面了,文章更新的速度略有延后.这个公众号断断 ...

  3. 30K iOS程序员的简述:如何快速进阶成为高级开发人员

    前言: 本篇文章适用于所有在这个行业已经有了几年时间后想要在职业生涯中取得突破的开发人员,编程人员和程序员(或者你可能刚刚开始,但希望你能看到你的路径) 本文适合那些有着简单愿望的人:你想成为一名高级 ...

  4. Java高级开发工程师面试笔记

    最近在复习面试相关的知识点,然后做笔记,后期(大概在2018.02.01)会分享给大家,尽自己最大的努力做到最好,还希望到时候大家能给予建议和补充 ----------------2018.03.05 ...

  5. j2ee高级开发技术课程第一周

    一.课程目标 这学期开始了J2EE高级开发技术这门课,在此之前我学习了javaSE,为这门课的学习打下了一定的基础.到这学期的结束我希望我能熟悉javaee,能开发企业级应用,对开发轻量级企业应用的主 ...

  6. 我眼中的如何成为一名合格的PHP高级开发工程师

    转眼间搞PHP已超过10年准确的说12年,混在帝都,也经历过大公司小公司,有个同行朋友问我,我就思考下,如何成为一名合格的PHP高级开发 所有的所有仅限综合知识,因为PHP其实内容也很多,有的人专门研 ...

  7. Java高级开发必会的50个性能优化的细节(珍藏版)

      在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. ● 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短 ...

  8. 我都xxx岁了,还能继续做开发吗?

    前言 今天纯文字,阅读时间10分钟左右 最近在看一本书<大型网站技术架构:核心原理与案例分析>,可以说是非常枯燥的一本书,在开头几章讲解了网站的发展,介绍了一些架构中的常用名词.虽然有点枯 ...

  9. 高薪诚聘熟悉ABP框架的.NET高级开发工程师(2016年7月28日重发)

    招聘单位是ABP架构设计交流群(134710707)群主阳铭所在的公司-上海运图贸易有限公司 招聘岗位:.NET高级开发工程师工作地点:上海-普陀区 [公司情况]上海运图贸易有限公司,是由易迅网的创始 ...

随机推荐

  1. OpenGL 实现视频编辑中的转场效果

    转场介绍 转场效果是什么? 转场效果,简单来说就是两段视频之间的衔接过渡效果. 现在拍摄 vlog 的玩家越来越多,要是视频没有一两个炫酷的转场效果,都不好意思拿出来炫酷了. 那么如何在视频编辑软件中 ...

  2. 用shell脚本实现定时备份数据库

    1.备份数据库的方法 可以使用命令查看 ls  /usr/local/mysql/bin 这个mysqldump就是系统内置的用来备份数据库的工具. 2.实现方法 ①先随便进入一个位置创建一个目录 ② ...

  3. Head First设计模式——中介者模式和备忘录模式

    中介者 中介者模式:使用中介者来集中相关对象之间复杂的沟通方式和控制方式. Bob有一个自动屋,当他的闹钟响了只有,闹钟会告诉咖啡壶开始煮咖啡.后来客户不断的提出许多新需求:周末不要提供咖啡.下班后需 ...

  4. JAVAEE学习day05学习,数组

    容器及元素的概念 容器:是将多个数据存储到一起 元素:每个数据称为该容器的元素 数组的概念 数组:数组是长度固定,存储数据的容器,保证多个数据的类型要一致 数组定义格式及其描述 动态定义: 数据类型 ...

  5. vue基础----组件通信(props,$emit,$attrs,$listeners)

    一.父传子,子传孙 1. props 1>在父组件中通过子组件自定义的标签属性来传递数据. 2>在子组件中通过props声明希望用到的数据 <body> <div id= ...

  6. 关于动态路由中路由之间的跳转(页面a跳转到页面b)

    由addRouters方法获取到后台的动态路由,要实现路由之间的跳转,不可直接用path: '***',而是将动态路由存储到vuex中,再从vuex中取得,如:this.$store.menu.nav ...

  7. vue控制台报错集锦

    1.ERROR in Cannot find module 'node-sass' 经常会出现node-sass没安装好的报错,没事,单独重新安装一下, 解决办法:npm install node-s ...

  8. 一个和与后台数据连接的模板get post put 以及延伸的query

    /* example: require.config({ paths: { "httpClient": "../../core/http-client" } } ...

  9. pytorch的自动求导机制 - 计算图的建立

    一.计算图简介 在pytorch的官网上,可以看到一个简单的计算图示意图, 如下. import torchfrom torch.autograd import Variable x = Variab ...

  10. C语言-转义字符

    %d   十进制有符号整数 %u   十进制无符号整数 %f    浮点数 %s   字符串 %c   单个字符 %p   指针的值 %e   指数形式的浮点数 %X   无符号以十六进制表示的整数 ...