Git 小技巧:忽略某些文件的更改
*以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/dp9Mwq7vf0ASF_FftBN8Ww

作为一枚合格的代码贡献者,时常需要跟踪自己或者团队代码的变更,那么就很有必要了解并掌握一些软件代码版本管理工具或者系统,比如 Git、SVN、CVS、VSS等。
版本管理工具比较多,都有存在的理由,虽然现在大型的软件工程都流行使用 git,不过大部分的工程也需要小而美的工具,比如 VSS。我还记得当年新入职的技术经理就带着我们没几个人的小团队上手了第一款软件版本管理工具 VSS,它的特点就是非常简单,每个文件只能同时由一个成员修改,改完释放权限等待其它成员继续使用。
不过,这里主要介绍主流的版本管理工具 Git,有一些使用 Git 过程中的小技巧想要分享给大家。

很多时候,由于偶然的原因,把一些不需要共享给团队其他人的文件也提交到了代码仓库,那么当这类文件有更改的时候,怎么让 git 自动忽略掉这些文件而避免被提交上去呢?
方法就是,为工程添加文件 gitignore。
文件介绍
在 Git 管理的工程下,文件有几种划分:
- tracked – 这种是被 Git 最新所追踪到的并且已经暂存和提交到仓库的所有文件。
- untracked – 这种是在 Git 管理的工程目录下创建的但还没有被暂存文件或提交到仓库的文件。
- ignored – 这种是被 Git 管理工具可以忽略的文件。
Git 会对工程文件夹内的 gitignore 文件做检索,如果找到该文件,则根据 gitignore 指定的文件、文件夹,执行忽略并放弃跟踪范围内的文件。gitignore 指定的文件就是 ignored 文件。
创建 gitignore
一般是在 Git 管理的工程根目录创建文件 gitignore,并且在文件名前添加点号(.),这是为了让文件管理器识别这个文件为默认隐藏。所以在类 unix 系统下,直接输入 ls 是看不到这个文件的,需要添加选项 -a。
ls -a
其实 gitignore 文件的存放位置没有固定,这就意味着在同一个工程下可以存在多个 gitignore 文件。
在类 unix 系统下,都可以这样创建 gitignore 文件
touch .gitignore
git 如何忽略文件或者文件夹
一般,日常开发中,我们认为提交到仓库的工程文件应该是最简化的。只要文件或者文件夹可以通过工程构建过程自动重新生成的,那么它们都可以不需要被版本管理工具 git 追踪到。如何利用好 gitignore 文件呢?
gitignore 内可以指定单个或者多个文件,甚至是文件夹。每一行填一个范式(pattern),范式可以是文件名或者文件夹名字,其中还可包含通配符 *。通配符的使用可以增强指定文件范围的灵活性。填写的文件名或者文件夹可以是相对路径或者绝对路径,相对路径是以 gitignore 文件所在目录开始。
我们来看一个简单的 gitignore 文件长什么样子

第一行,直接指定了一个文件名 notice.txt,意思就是相对路径下 notice.txt 将会被 git 忽略追踪。
第二行,指定的是一个文件夹名字 project,后边还带上了 / 以标明是文件夹,意思就是相对路径下 project 文件夹内所有文件以及子文件都将会被 git 忽略追踪。
第三行,指定了 app 开头的所有文件名,意思就是相对路径下 app 开头的所有文件将会被 git 忽略追踪。
第四行,是的,把 gitignore 文件自己也指定为忽略追踪。
在 gitignore 文件里添加好范式后,就可以查看一下 git 管理的工程目录是否还在追踪那些应该被忽略掉的文件了
git status
如果文件已经被提交?
在使用 gitignore 文件来添加忽略文件的时候,经常会碰到有些文件或者文件夹明明已经被添加到 gitignore 文件里了,但就是还会被 git 追踪到有更新的内容。
这是因为,这些文件或者文件夹在之前的提交记录里,已经被暂存和提交到仓库了。那么怎么办?
第一步,先把这些文件从仓库中移除,比如我有个构建的中间文件 xxx 曾经被错误提交上去了
git rm xxx
但是,上面的操作会把本地工程目录中的 xxx 文件也删除掉,如果不需要在本地也删除,可以在 rm 指令后边添加选项 --cached
git rm --cached xxx
今天就先介绍这么多,如果你有更好的技巧,期待和你的交流!
微信公众号 ENG八戒
Git 小技巧:忽略某些文件的更改的更多相关文章
- git使用小技巧-忽略提交文件设置
前言 我们可以把自己的代码放到github上,但是我们有的文件或者文件夹不想提交到github上,这时候用到一个忽略文件 操作方法 * 在项目根目录创建一个 .gitignore文件 * 打开.git ...
- Android studio 开发中 用git实现批量忽略特定文件的方法
git实现批量忽略特定文件的方法 在用AndroidStudio开发项目的时候,3个人协同开发,那么用Git同步代码,会将模块中的大量iml文件同步,每次都会提交和更新,一个一个的去忽略他们,显然是最 ...
- git提交如何忽略某些文件
在使用git对项目进行版本管理的时候,我们总有一些不需要提交到版本库里的文件和文件夹,这个时候我们就需要让git自动忽略掉一下文件. 使用.gitignore忽略文件 为了让git忽略指定的文件和文件 ...
- 转:git设置过滤忽略的文件或文件夹
from: https://www.cnblogs.com/foohack/p/4629255.html git设置过滤忽略的文件或文件夹 我们一般向代码仓库提交项目的时候,一般需要忽略编译生成的 ...
- git提交时忽略指定文件
git提交时忽略指定文件 我们在项目开发过程中经常用到git来管理自己的项目,使用git版本控制进行多人协作开发具有许多优势,这里就不一一阐述了,有兴趣的同学可以自己去查找资料进行系统的学习.而本篇文 ...
- KiCad 工程用 Git 管理需要忽略哪些文件?
KiCAD 工程用 Git 管理需要忽略哪些文件? KiCAD 使用的 文本格式,天生可以用 Git 来管理. 但是并非所有文件需要使用 Git 管理,以下文件可以忽略. *.bak fp-info- ...
- Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具
前言 本文主要写给使用命令行来操作Git的用户,用于提高Git使用的效率.至于使用命令还是GUI(Tortoise Git或VS的Git插件)就不在此讨论了,大家根据自己的的喜好选择就好.我个人是比较 ...
- Git 小技巧
分享git的几个小技巧,后面会根据使用补充.目前包括git撤销本地修改.git回退到前n个版本.git多用户提交冲突解决.git 命令简化.欢迎大家补充^_* 1.git撤销本地修改 git rese ...
- git小技巧
1 git提交时如何忽略一些文件: 在git根目录下添加,然后提交,就可以使用了,详细的语法详见 https://github.com/github/gitignore github提供了一个通用的. ...
- Git学习之忽略特殊文件.gitignore的配置
1.Mac中使用Git上传项目代码时忽略.DS_Store文件 简单的说Mac每个目录都会有个文件叫.DS_Store,它是用于存储当前文件夹的一些Meta信息.所以每次查看Git目录的状态,如果没有 ...
随机推荐
- Telerik——GridView总结(Winform)
在使用Telerik控件时有很多的方法,属性经常被用到,分享在此总结也便于查看复习. 1.基本属性 GridViewTextBoxColumn col = new GridViewTextBoxCol ...
- Unity多线程使用(线程池)
1.在C#中使用线程池需要以下这个类库using System.Threading 2.开单个线程(unity程序停止前 线程一定要关闭) private Thread tempThread; voi ...
- 同一系统开启两个ftp进程
1.正常情况是yum 安装vsftpd服务 ,在/etc/vsftpd目录更改配置,起服务.这样启动是一个服务. 2.启动第二个vsftpd服务 #创建虚拟用户 useradd -d /home/vi ...
- 查询某数据库的某字段存在于哪些表 mysql
select column_name,column_comment,data_type ,table_name from information_schema.columns where table ...
- centos/redhat 多路径存储使用 - 客户端
DM Multipath(DMMP)工具 磁盘扫描 添加磁盘到dg--首先通知存储管理员划分相应的盘到指定的机器,说明共享--扫描磁盘(两个节点执行)[root@testrac1 ~]# echo & ...
- nacos之配置中心使用
发布配置 dataId 数据的key group 组id 获取配置 通过group,dataId获取配置信息 监听配置 Listening-Configs里的值是重点,组成方式 dataId的值%02 ...
- centos7 七步教你安装搭建 LAMP 服务
先说说LAMP是什么 LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写: Linux,操作系统 Apache,网页服务器 MariaDB或MySQL,数据库管理系统(或者数 ...
- source Insight 的常用设置
1. 去除^M 的显示 "Options->Preferences->Files", 设置"Default File Format" to &quo ...
- Erlang Mnesia数据库迁移方法
本文参考https://blog.csdn.net/yangzm/article/details/51686249 需求 因为一些原因,需要把一个Mnesia节点的数据库搬迁到另一个节点,然后弃用原来 ...
- Debug --> wireshark中的lua插件使用
一.使用Lua脚本对pcap文件按流进行存储 https://zhuanlan.zhihu.com/p/35188803 二.使用tshark对pcap报文进行批量切流 https://blog.cs ...