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为我们提供一种机制,告诉我们不应在存储库中跟踪哪些文件,

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

最新文章

  1. 烂泥:Postfix邮件服务器搭建之虚拟用户配置
  2. 010. 使用.net框架提供的属性
  3. POJ 3565 Ants (最小权匹配)
  4. SQL Server 2008 报表服务入门
  5. cordova ios
  6. sqlserver中Profiler的使用
  7. Java经典23种设计模式之结构型模式(一)
  8. PHP GUID的生成源码
  9. 康复计划#1 再探后缀自动机&amp;后缀树
  10. 腾讯发布 Omix 1.0 - 用 JSX 或 hyperscript 创建用户界面
  11. Keras官方中文文档:序贯模型
  12. 深入Java关键字instanceof
  13. 二阶环路滤波器的matlab 设计
  14. 将mnist获得的数据还原成图片形式
  15. Java 虚拟机对锁优化所做的努力
  16. tyvj/joyoi 1305 最大子序和
  17. centos7.2启动级别
  18. 高级Bash脚本编程(一)
  19. MSP430 G2553 LaunchPad GPIO中断
  20. 【Z】扩展阿里巴巴Java开发规约插件

热门文章

  1. 关于“关键字synchronized不能被继承”的一点理解
  2. selenium+options配置文件
  3. Spring Boot入门系列(六)如何整合Mybatis实现增删改查
  4. 小白的docker极简入门(二)、5分钟教你玩转docker安装
  5. 深度学习与人类语言处理-语音识别(part3)
  6. 龙生九子-浅谈Java的继承
  7. void指针和数组指针之间的转换
  8. 13. Java 获取指定字符串出现的次数
  9. 入门Python实现七夕表白神器
  10. Fast and accurate bacterial species identification in urine specimens using LC-MS/MS mass spectrometry and machine learning (解读人:闫克强)