Git进阶之旅:.gitignore 文件

news/2025/1/31 9:31:24 标签: git
  1. 介绍:
    1. 在项目中,我们可能一起提交多个文件
      1. git  add  -A:提交所有变化
      2. git  add  -u:提交被修改(modified) 和被删除文件(deleted) 文件,不包括新文件(new) 
      3. git  add  .:提交新文件(new) 和被修改文件(modified) ,不包括被删除文件(deleted)
    2. 使用 Git 的过程中,有些文件无需纳入 Git 管理,也不希望它们出现在未跟踪列表,这些文件通常是日志文件、临时文件、编译产生的中间文件、工具自动生成的文件等。
    3. 此时,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式,Git 会根据这些模式规则来判断是否将文件添加到版本控制中
    4. 注意:在 windows 下可以创建文件名为 .gitignore,保存之后系统会自动重命名为 .gitignore
  2. 格式规范:
    1. 所有空行或者以注释 # 开头的都会被 Git 忽略
    2. 可以使用标准的 glob 模式匹配
    3. 匹配模式最后跟 / 说明要忽略的文件是 目录
    4. 要忽略指定模式外的文件或目录,可以在模式前加上 !进行取反
  3. glob 模式:
    1. *:匹配零个或多个任意字符
    2. [ ]:匹配任意一个在方括号中的字符,如 [ab]:匹配 a 或者匹配 b
    3. ?:匹配一个任意字符
    4. [ n - m]:匹配所有在这两个字范围内的字符,如 [ 0 - 9 ]:表示匹配所有 0 到 9 的数字
    5. 匹配实例:
      1. logs/:忽略当前路径下的 logs 目录,包含 logs 下的子目录和文件
      2. /logs.txt:忽略根目录下的 logs.txt 文件
      3. *.class:忽略所有后缀为 .class 的文件
      4. ·······
  4. 案例:
    1. 在需要创建 .gitignore 文件的文件夹,右键选择 Git Bash 进入命令行,进入项目所在目录
    2. 输入 touch  .gitignore ,文件夹就会生成一个 ".gitignore " 文件
    3. 然后用编辑器打开这个文件进行编辑即可
    4. 编写要忽略的文件:
      1. .gitignore 内容:
    5. 创建两个文件:
    6. 查看状态发现 testclass.class 文件不在工作区
    7. 提交也不会进入暂存区:
    8. 定义全局的 .gitignore:
      1. 除了可以在项目中定义  .gitignore 文件外,还可以设置全局的 .gitignore  文件来管理所有 Git 项目的行为
      2. 这种方式在不同的项目开发者之间是不共享的,是属于项目之上 Git 应用级别的行为
      3. 可以在任意路径下创建对应的 .gitignore 文件,然后使用以下命令配置:
        1. git  config  --global  core.excludesfile  ~/.gitignore
    9. .gitignore 规则不生效:
      1. .gitignore 只能忽略那些原来没有被 track 的文件,如果某些文件已经被纳入了版本管理中,则修改 .gitignore 是无效的
      2. 一定要养成在项目开始就创建 .gitignore 文件的习惯
    10. Java 开发通用模板:
      ######################
      # 解决java产生文件
      ######################
      *.class
      
      # Mobile Tools for Java (J2ME)
      .mtj.tmp/
      
      # Package Files #
      *.jar
      *.war
      *.ear
      
      # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
      hs_err_pid*
      
      ######################
      # 解决maven产生的文件
      ######################
      
      target/
      **/target/
      pom.xml.tag
      pom.xml.releaseBackup
      pom.xml.versionsBackup
      pom.xml.next
      release.properties
      dependency-reduced-pom.xml
      buildNumber.properties
      .mvn/timing.properties
      
      ######################
      # 解决各类编辑器自动产生的文件
      ######################
      
      *.iml
      
      ## Directory-based project format:
      .idea/
      # if you remove the above rule, at least ignore the following:
      
      # User-specific stuff:
      # .idea/workspace.xml
      # .idea/tasks.xml
      # .idea/dictionaries
      
      # Sensitive or high-churn files:
      # .idea/dataSources.ids
      # .idea/dataSources.xml
      # .idea/sqlDataSources.xml
      # .idea/dynamic.xml
      # .idea/uiDesigner.xml
      
      # Gradle:
      # .idea/gradle.xml
      # .idea/libraries
      
      # Mongo Explorer plugin:
      # .idea/mongoSettings.xml
      
      ## File-based project format:
      *.ipr
      *.iws
      
      ## Plugin-specific files:
      
      # IntelliJ
      /out/
      /target/
      
      # mpeltonen/sbt-idea plugin
      .idea_modules/
      
      # JIRA plugin
      atlassian-ide-plugin.xml
      
      # Crashlytics plugin (for Android Studio and IntelliJ)
      com_crashlytics_export_strings.xml
      crashlytics.properties
      crashlytics-build.properties
    11. diff 命令:
      1. git  diff  文件名:
        1. a 表示:前面的变量
        2. b 表示:后面的变量
        3. HEAD:commit  版本
        4. Index:staged 版本
      2. 工作区 vs 缓存区:
        1. git  diff  文件名:
        2. 意义:查看文件在工作目录与暂存区的差别。如果还没进暂存区,则查看文件自身修改后的差别。
        3. 也可查看和另一分支的区别:git  diff  <branch> <filename>
      3. 暂存区 vs Git 仓库:
        1. git  diff  --cached  文件名:
        2. 意义:表示查看已经 add 到暂存区但是尚未 commit 的内容同最新一次 commit 的内容的差异
        3. 也可以指定版本库:git  diff  --cached  版本  文件名:
      4. 工作目录 vs  Git仓库:
        1. git  diff  版本  文件名:
        2. 意义:查看工作目录同 Git 仓库指定 commit 的内容差异
        3. 版本 == HEAD 时:查看工作目录同最近一次 commit 的内容差异
      5. Git  仓库 vs Git 仓库:
        1. 查看 Git 仓库任意两次 commit 之间的差别:git  diff  版本  版本
      6. 注意:
        1. 以上命令不指定文件名,则对全部文件操作
        2. 以上命令和 Git 仓库对比的,均可指定 commit 的版本
          1. HEAD:最近一次 commit
          2. HEAD^:上一次提交
          3. HEAD~100:上100次提交

    http://www.niftyadmin.cn/n/5838554.html

    相关文章

    【2】阿里面试题整理

    [1]. 说一下Java与C的区别。 Java和C是两种在软件开发领域应用非常广泛的语言&#xff0c;但它们的设计理念和应用场景有所不同。 Java是一种基于JVM的解释型语言&#xff0c;具有跨平台性&#xff0c;使用自动垃圾回收机制&#xff0c;这使得开发者可以更专注于业务逻辑&…

    【计算机网络】设备更换地区后无法访问云服务器问题

    文章目录 1. **服务器的公网 IP 是否变了**2. **服务器的防火墙或安全组设置**3. **本地运营商或 NAT 限制**4. **ISP 限制或端口封锁**5. **服务器监听地址检查** 1. 服务器的公网 IP 是否变了 在服务器上运行以下命令&#xff0c;检查当前的公网 IP&#xff1a;curl ifconfi…

    自动化运维的未来:从脚本到AIOps的演进

    点击进入IT管理资料库 一、自动化运维的起源&#xff1a;脚本时代 &#xff08;一&#xff09;脚本在运维中的应用场景 在自动化运维的发展历程中&#xff0c;脚本扮演着至关重要的角色&#xff0c;它作为最初的操作入口&#xff0c;广泛应用于诸多日常运维工作场景里。 在系统…

    INCOSE需求编写指南-附录 C: 需求模式

    附录 Appendix C: 需求模式 Requirement Patterns C.1 需求模式简介 Introduction to Requirement Patterns 需求模式&#xff08;样板或模板&#xff09;的概念最初于 1998 年在英国的未来水面战斗人员 (FSC) 国防项目中应用&#xff08;Dick 和 Llorens&#xff0c;2012 年…

    零碎的知识点(十二):卷积神经网络CNN通道数的理解!

    卷积神经网络CNN通道数的理解&#xff01; 通道数的核心概念解析1. 通道数的本质 2. 单张灰度图的处理示例&#xff1a; 3. 批量输入的处理通道与批次的关系&#xff1a; 4. RGB三通道输入的处理计算过程&#xff1a;示例&#xff1a; 5. 通道数的实际意义6. 可视化理解(1) 单通…

    【视频+图文详解】HTML基础4-html标签的基本使用

    图文教程 html标签的基本使用 无序列表 作用&#xff1a;定义一个没有顺序的列表结构 由两个标签组成&#xff1a;<ul>以及<li>&#xff08;两个标签都属于容器级标签&#xff0c;其中ul只能嵌套li标签&#xff0c;但li标签能嵌套任何标签&#xff0c;甚至ul标…

    哈希表实现

    目录 1. 哈希概念 1.1 直接定址法 1.2 哈希冲突 1.3 负载因子 1.4 将关键字转为整型 1.5 哈希函数 1.5.1 除法散列法/除留余数法 1.5.2 乘法散列法 1.5.3 全域散列法 1.5.4 其他方法 1.6 处理哈希冲突 1.6.1 开放定址法 1.6.1.1 线性探测 1.6.1.2 二次探测 1.6.…

    STM32 PWM驱动舵机

    接线图&#xff1a; 这里将信号线连接到了开发板的PA1上 代码配置&#xff1a; 这里的PWM配置与呼吸灯一样&#xff0c;呼吸灯连接的是PA0引脚&#xff0c;输出比较单元用的是OC1通道&#xff0c;这里只需改为OC2通道即可。 完整代码&#xff1a; #include "servo.h&quo…