Git进阶之旅:.gitignore 文件

介绍:
  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
格式规范:
  1. 所有空行或者以注释 # 开头的都会被 Git 忽略
  2. 可以使用标准的 glob 模式匹配
  3. 匹配模式最后跟 / 说明要忽略的文件是 目录
  4. 要忽略指定模式外的文件或目录,可以在模式前加上 !进行取反
glob 模式:
  1. *:匹配零个或多个任意字符
  2. \]:匹配任意一个在方括号中的字符,如 \[ab\]:匹配 a 或者匹配 b

  3. n - m\]:匹配所有在这两个字范围内的字符,如 \[ 0 - 9 \]:表示匹配所有 0 到 9 的数字

    1. logs/:忽略当前路径下的 logs 目录,包含 logs 下的子目录和文件
    2. /logs.txt:忽略根目录下的 logs.txt 文件
    3. *.class:忽略所有后缀为 .class 的文件
    4. ·······
案例:
  1. 在需要创建 .gitignore 文件的文件夹,右键选择 Git Bash 进入命令行,进入项目所在目录
  2. 输入 touch .gitignore ,文件夹就会生成一个 ".gitignore " 文件
  3. 然后用编辑器打开这个文件进行编辑即可
  4. 编写要忽略的文件:
    1. .gitignore 内容:
  5. 创建两个文件:
  6. 查看状态发现 testclass.class 文件不在工作区
  7. 提交也不会进入暂存区:

定义全局的 .gitignore:
  1. 除了可以在项目中定义 .gitignore 文件外,还可以设置全局的 .gitignore 文件来管理所有 Git 项目的行为
  2. 这种方式在不同的项目开发者之间是不共享的,是属于项目之上 Git 应用级别的行为
  3. 可以在任意路径下创建对应的 .gitignore 文件,然后使用以下命令配置:
    1. git config --global core.excludesfile ~/.gitignore
.gitignore 规则不生效:
  1. .gitignore 只能忽略那些原来没有被 track 的文件,如果某些文件已经被纳入了版本管理中,则修改 .gitignore 是无效的
  2. 一定要养成在项目开始就创建 .gitignore 文件的习惯
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
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次提交
相关推荐
李天琦1 小时前
git查看commit属于那个tag
linux·git·云计算
Hoking4 小时前
CentOS7.9环境离线部署docker和docker-compose的两种方式
git·docker·容器
Clownseven5 小时前
用Git管理你的服务器配置文件与自动化脚本:版本控制、变更追溯、团队协作与安全回滚的运维之道
运维·服务器·git
F_D_Z6 小时前
【清晰教程】利用Git工具将本地项目push上传至GitHub仓库中
git·github
天天摸鱼的java工程师9 小时前
Git 分支管理规范:从理论到实战的企业级最佳实践
java·git·后端
深兰科技10 小时前
青岛市长任刚与深兰科技董事长陈海波会谈,深兰青岛项目即将进入快车道!
人工智能·git·docker·jupyter·深兰科技·青岛项目·陈海波
2401_8742751712 小时前
linux、docker、git相关操作
linux·git·docker
化作繁星1 天前
git忽略校验,强制提交
git
爱宇阳1 天前
Git 教程 | 如何将指定文件夹回滚到上一次或某次提交状态(命令详解)
git·git回滚
杰哥技术分享1 天前
Git 中移除已追踪的文件
git