Git 小技巧:忽略某些文件的更改

git,技巧,忽略,某些,文件,更改 · 浏览次数 : 531

小编点评

**版本管理工具介绍** * **Git**:是目前最流行的版本管理工具,支持各种平台和操作系统。 * **SVN**:是版本控制系统,与 Git 相似,但更易于使用。 * **CVS**:是一种早期版本的版本控制系统,与 Git 和 SVN 相似,但更简单易用。 * **VSS**:是一种基于文件系统的版本控制系统,简单易用。 **gitignore 文件** gitignore 文件用于指定哪些文件或文件夹应该被版本管理工具忽略。文件可以使用相对路径或绝对路径指定。 **创建 gitignore 文件** 在 Git 管理的工程根目录创建文件 `gitignore`,并在文件中添加要忽略的文件或文件夹的范式。 **如何利用 gitignore 文件** * 使用 `gitignore` 指定单个文件或文件夹。 * 使用 `gitignore` 指定文件夹名字。 * 使用 `gitignore` 指定相对路径或绝对路径。 * 使用通配符 * 来指定多个文件或文件夹。 **注意** * 在添加文件或文件夹到 `gitignore` 文件时,请确保它们不在被版本管理工具中已提交的记录中。 * 可以使用 `git status` 命令查看文件是否已被提交到仓库中。

正文

*以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「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 小技巧:忽略某些文件的更改相似的内容:

Git 小技巧:忽略某些文件的更改

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

使用Electron-packager打包已有的web项目,发布客户端

1、先拉electron代码 git clone https://github.com/electron/electron-quick-start 2、将web项目拷贝到electron-quick-start文件夹下 3、更改main.js 更换引用的html const {app, Browse

面试官:你了解git cherry-pick吗?

事情要从一次不规范的代码开发开始说起 背景故事 时间 2024年某个风平浪静的周五晚上 地点 中国,北京,西二旗,某互联网大厂会议室 人物 小杰,小A,小B,老K 对话 老K:昨天提交的代码被测试打回来了!为什么小B没开发完的内容也一起提交上去了? 小B:啊?我不清楚啊,我在开发分支B开发完一部分就

国产大语言模型ChatGLM3本地搭建、使用和功能扩展

1、官网 ChatGLM3 2、下载ChatGLM3源码 直接在https://github.com/THUDM/ChatGLM3,下载源码 3、下载模型 如果显卡8G一下建议下载ChatGLM3-6B,ModelScope是国内的,下载比较快 用下面两种方式都可以下载 使用git在MadelSco

Java也能做OCR!SpringBoot 整合 Tess4J 实现图片文字识别

今天给大家分享一个SpringBoot整合Tess4j库实现图片文字识别的小案例,希望xdm喜欢。文末有案例代码的Git地址,可以自己下载了去玩玩儿或继续扩展也行。

【规范】Git分支管理,看看我司是咋整的

制定Git分支管理规范旨在加速团队协作,确保代码质量和主分支稳定性,支持敏捷开发流程。主要涉及分支包括:主分支(master/main)确保生产环境稳定;开发分支(develop)用于集成日常开发成果;特性分支(feature)支持单独功能开发;修复分支(hotfix)快速修复线上问题。规范流程涵盖...

Git分支管理

前言 从22年10月到24年1月,一直忙于项目建设,终于顺利投产,截止现在,项目需求、项目缺陷持续推进,越发感觉到代码分支管理的重要性,从项目投产最初,一直试图通过查询各种资料,想找到一种合适的策略进行分支管理,奈何可能是资料过于繁杂未能发现有实际落地价值的资料,通过诸多资料,仅知道了有git工作流

保姆教程系列:Git 实用命令详解

!!!是的没错,胖友们,保姆教程系列又更新了!!! @目录前言1.将本地项目推送到远程仓库2. Idea Git回退到某个历史版本3. 修改项目关联远程地址方法4. Git 修改分支的名称5. Git 删除分支6. master分支代码复制到新的分支7. Git迁移项目到其他代码仓库,且保留分支与提

Git——分支管理(2)

Git——分支管理(2) 提示:图床在国外且动图比较多的情况下,需要时间加载。 目录: 目录Git——分支管理(2)提示:图床在国外且动图比较多的情况下,需要时间加载。目录:Git基础Git的分支与HEADGit的存储机制Git的分支指针Git的远程仓库Git的远程分支管理远程分支和本地仓库的冲突处

Git 版本控制:构建高效协作和开发流程的最佳实践

版本控制是软件开发的核心,促进团队协作与项目管理。通过制定明确的分支命名策略,遵循一致的代码提交规范,如指明提交类型和简短描述,增强了历史记录的可读性,可以清晰地组织和理解项目的结构与进展。