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

作为一枚合格的代码贡献者,时常需要跟踪自己或者团队代码的变更,那么就很有必要了解并掌握一些软件代码版本管理工具或者系统,比如 Git、SVN、CVS、VSS等。

版本管理工具比较多,都有存在的理由,虽然现在大型的软件工程都流行使用 git,不过大部分的工程也需要小而美的工具,比如 VSS。我还记得当年新入职的技术经理就带着我们没几个人的小团队上手了第一款软件版本管理工具 VSS,它的特点就是非常简单,每个文件只能同时由一个成员修改,改完释放权限等待其它成员继续使用。

不过,这里主要介绍主流的版本管理工具 Git,有一些使用 Git 过程中的小技巧想要分享给大家。

很多时候,由于偶然的原因,把一些不需要共享给团队其他人的文件也提交到了代码仓库,那么当这类文件有更改的时候,怎么让 git 自动忽略掉这些文件而避免被提交上去呢?

方法就是,为工程添加文件 gitignore。

文件介绍

在 Git 管理的工程下,文件有几种划分:

  1. tracked – 这种是被 Git 最新所追踪到的并且已经暂存和提交到仓库的所有文件。
  2. untracked – 这种是在 Git 管理的工程目录下创建的但还没有被暂存文件或提交到仓库的文件。
  3. 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 小技巧:忽略某些文件的更改的更多相关文章

  1. git使用小技巧-忽略提交文件设置

    前言 我们可以把自己的代码放到github上,但是我们有的文件或者文件夹不想提交到github上,这时候用到一个忽略文件 操作方法 * 在项目根目录创建一个 .gitignore文件 * 打开.git ...

  2. Android studio 开发中 用git实现批量忽略特定文件的方法

    git实现批量忽略特定文件的方法 在用AndroidStudio开发项目的时候,3个人协同开发,那么用Git同步代码,会将模块中的大量iml文件同步,每次都会提交和更新,一个一个的去忽略他们,显然是最 ...

  3. git提交如何忽略某些文件

    在使用git对项目进行版本管理的时候,我们总有一些不需要提交到版本库里的文件和文件夹,这个时候我们就需要让git自动忽略掉一下文件. 使用.gitignore忽略文件 为了让git忽略指定的文件和文件 ...

  4. 转:git设置过滤忽略的文件或文件夹

    from: https://www.cnblogs.com/foohack/p/4629255.html git设置过滤忽略的文件或文件夹   我们一般向代码仓库提交项目的时候,一般需要忽略编译生成的 ...

  5. git提交时忽略指定文件

    git提交时忽略指定文件 我们在项目开发过程中经常用到git来管理自己的项目,使用git版本控制进行多人协作开发具有许多优势,这里就不一一阐述了,有兴趣的同学可以自己去查找资料进行系统的学习.而本篇文 ...

  6. KiCad 工程用 Git 管理需要忽略哪些文件?

    KiCAD 工程用 Git 管理需要忽略哪些文件? KiCAD 使用的 文本格式,天生可以用 Git 来管理. 但是并非所有文件需要使用 Git 管理,以下文件可以忽略. *.bak fp-info- ...

  7. Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具

    前言 本文主要写给使用命令行来操作Git的用户,用于提高Git使用的效率.至于使用命令还是GUI(Tortoise Git或VS的Git插件)就不在此讨论了,大家根据自己的的喜好选择就好.我个人是比较 ...

  8. Git 小技巧

    分享git的几个小技巧,后面会根据使用补充.目前包括git撤销本地修改.git回退到前n个版本.git多用户提交冲突解决.git 命令简化.欢迎大家补充^_* 1.git撤销本地修改 git rese ...

  9. git小技巧

    1 git提交时如何忽略一些文件: 在git根目录下添加,然后提交,就可以使用了,详细的语法详见 https://github.com/github/gitignore github提供了一个通用的. ...

  10. Git学习之忽略特殊文件.gitignore的配置

    1.Mac中使用Git上传项目代码时忽略.DS_Store文件 简单的说Mac每个目录都会有个文件叫.DS_Store,它是用于存储当前文件夹的一些Meta信息.所以每次查看Git目录的状态,如果没有 ...

随机推荐

  1. 模型 线框shader

    https://www.assetstore.unity3d.com/cn/?stay#!/content/21897

  2. 解决“chrome正受到自动测试软件的控制”信息栏显示问题

    在使用Selenium WebDriver启动谷歌浏览器Chrome时,在新启动的浏览器地址栏下方经常会显示一行提示信息:"chrome正受到自动测试软件的控制",英文的就是&qu ...

  3. 解决PageHelper分页不正常,pages始终等于1,total 始终等于pageSize的问题

    问题 pages始终等于1,total 始终等于pageSize 原因 原因是我在查询到list数据之后,对list做了操作,导致分页不正常 // 这是service层的类 public PageIn ...

  4. 查看linux进程启动运行时间

    ps -eo pid,tty,user,lstart,etime,cmd|grep nginx 参数说明: pid:进程ID tty:终端 user:用户 lstart:开始时间 etime:运行时间 ...

  5. python路径

    #1.获取默认路径import os print (os.path.abspath('.')) my_path = os.path.abspath('.') #2.读取数据 my_data = pd. ...

  6. flutter 顶部导航tabbar自定义

    本文使用tabbar实现顶部横向滚动多个菜单. 实现tabbar搜索框功能加功能按钮. 话不多说,上代码! import 'package:flutter/cupertino.dart'; impor ...

  7. bzoj 3561

    题意:求$\sum_{i=1}^{n}\sum_{j=1}^{n}lcm(i,j)^{gcd(i,j)}$ 神仙题... 首先可能会想到一个转化,就是$lcm(i,j)=\frac{ij}{gcd(i ...

  8. bzoj 3309

    奇怪的莫比乌斯反演... 题意:定义$f(n)$表示将$n$质因数分解后质因子的最高幂次,求$\sum_{i=1}^{a}\sum_{j=1}^{b}f(gcd(i,j))$ 首先肯定是反演嘛... ...

  9. Eclipse 搭建一个简单的SpringBoot+WebSocket环境

    WebSocket是一种在单个TCP连接上进行全双工通信的协议. WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范. WebSocket API也被 ...

  10. linux清除日志和文件缓存

    1.查找大文件,从根目录 find / -type f -size +800M 2.查看磁盘挂载情况及挂载目录 df -lh 3.查看内存使用情况 free -m 4.清除缓存 echo 3 > ...