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次提交
相关推荐
b1ng8 小时前
新人程序员 Git 一站式指南
git·github
程序员的世界你不懂9 小时前
IDE 关联 Git 操作
ide·git
weixin_4284984911 小时前
Git Submodule 介绍和使用指南
git
jingshaoqi_ccc1 天前
GitKraken最后一个免费版本和下载地址
git·github·gitkraken·版本管理工具
乌云暮年1 天前
Git简单命令
git·gitee·github·batch命令
用户1259265423201 天前
使用 Docker 搭建 Gitea 并实现 Git HTTP 自动登录
git
一只毛驴1 天前
谈谈对git stash的理解?
git
长风破浪会有时呀1 天前
Git 学习笔记
笔记·git·学习
中微子2 天前
Git Rebase 详解:概念、原理与实战示例
git
荔枝吻2 天前
【保姆级喂饭教程】Windows下安装Git Flow
windows·git·git flow