Git进阶之旅:.gitignore 文件

打印 上一主题 下一主题

主题 1006|帖子 1006|积分 3018


  • 先容:

    • 在项目中,我们可能一起提交多个文件

      • git  add  -A:提交所有变革
      • git  add  -u:提交被修改(modified) 和被删除文件(deleted) 文件,不包罗新文件(new) 
      • git  add  .:提交新文件(new) 和被修改文件(modified) ,不包罗被删除文件(deleted)

    • 使用 Git 的过程中,有些文件无需纳入 Git 管理,也不希望它们出如今未跟踪列表,这些文件通常是日志文件、临时文件、编译产生的中间文件、工具主动生成的文件等。
    • 此时,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式,Git 会根据这些模式规则来判断是否将文件添加到版本控制中
    • 留意:在 windows 下可以创建文件名为 .gitignore,保存之后系统会主动重定名为 .gitignore

  • 格式规范:

    • 所有空行大概以注释 # 开头的都会被 Git 忽略
    • 可以使用标准的 glob 模式匹配
    • 匹配模式末了跟 / 分析要忽略的文件是 目次
    • 要忽略指定模式外的文件或目次,可以在模式前加上 !进行取反

  • glob 模式:

    • *:匹配零个或多个恣意字符
    • [ ]:匹配恣意一个在方括号中的字符,如 [ab]:匹配 a 大概匹配 b
    • ?:匹配一个恣意字符
    • [ n - m]:匹配所有在这两个字范围内的字符,如 [ 0 - 9 ]:表示匹配所有 0 到 9 的数字
    • 匹配实例:

      • logs/:忽略当前路径下的 logs 目次,包罗 logs 下的子目次和文件
      • /logs.txt:忽略根目次下的 logs.txt 文件
      • *.class:忽略所有后缀为 .class 的文件
      • ·······


  • 案例:

    • 在必要创建 .gitignore 文件的文件夹,右键选择 Git Bash 进入命令行,进入项目所在目次
    • 输入 touch  .gitignore ,文件夹就会生成一个 ".gitignore " 文件

    • 然后用编辑器打开这个文件进行编辑即可
    • 编写要忽略的文件:

      • .gitignore 内容:


    • 创建两个文件:

    • 查察状态发现 testclass.class 文件不在工作区

    • 提交也不会进入暂存区:           
                     
            

  • 定义全局的 .gitignore:

    • 除了可以在项目中定义  .gitignore 文件外,还可以设置全局的 .gitignore  文件来管理所有 Git 项目的行为
    • 这种方式在不同的项目开发者之间是不共享的,是属于项目之上 Git 应用级别的行为
    • 可以在恣意路径下创建对应的 .gitignore 文件,然后使用以下命令设置:

      • git  config  --global  core.excludesfile  ~/.gitignore


  • .gitignore 规则不生效:

    • .gitignore 只能忽略那些原来没有被 track 的文件,假如某些文件已经被纳入了版本管理中,则修改 .gitignore 是无效的
    • 一定要养成在项目开始就创建 .gitignore 文件的风俗

  • Java 开发通用模板:

    1. ######################
    2. # 解决java产生文件
    3. ######################
    4. *.class
    5. # Mobile Tools for Java (J2ME)
    6. .mtj.tmp/
    7. # Package Files #
    8. *.jar
    9. *.war
    10. *.ear
    11. # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
    12. hs_err_pid*
    13. ######################
    14. # 解决maven产生的文件
    15. ######################
    16. target/
    17. **/target/
    18. pom.xml.tag
    19. pom.xml.releaseBackup
    20. pom.xml.versionsBackup
    21. pom.xml.next
    22. release.properties
    23. dependency-reduced-pom.xml
    24. buildNumber.properties
    25. .mvn/timing.properties
    26. ######################
    27. # 解决各类编辑器自动产生的文件
    28. ######################
    29. *.iml
    30. ## Directory-based project format:
    31. .idea/
    32. # if you remove the above rule, at least ignore the following:
    33. # User-specific stuff:
    34. # .idea/workspace.xml
    35. # .idea/tasks.xml
    36. # .idea/dictionaries
    37. # Sensitive or high-churn files:
    38. # .idea/dataSources.ids
    39. # .idea/dataSources.xml
    40. # .idea/sqlDataSources.xml
    41. # .idea/dynamic.xml
    42. # .idea/uiDesigner.xml
    43. # Gradle:
    44. # .idea/gradle.xml
    45. # .idea/libraries
    46. # Mongo Explorer plugin:
    47. # .idea/mongoSettings.xml
    48. ## File-based project format:
    49. *.ipr
    50. *.iws
    51. ## Plugin-specific files:
    52. # IntelliJ
    53. /out/
    54. /target/
    55. # mpeltonen/sbt-idea plugin
    56. .idea_modules/
    57. # JIRA plugin
    58. atlassian-ide-plugin.xml
    59. # Crashlytics plugin (for Android Studio and IntelliJ)
    60. com_crashlytics_export_strings.xml
    61. crashlytics.properties
    62. crashlytics-build.properties
    复制代码
  • diff 命令:

    • git  diff  文件名:

      • a 表示:前面的变量
      • b 表示:后面的变量
      • HEAD:commit  版本
      • Index:staged 版本

    • 工作区 vs 缓存区:

      • git  diff  文件名:

      • 意义:查察文件在工作目次与暂存区的差异。假如还没进暂存区,则查察文件自身修改后的差异。
      • 也可查察和另一分支的区别:git  diff  <branch> <filename>

    • 暂存区 vs Git 堆栈:

      • git  diff  --cached  文件名:

      • 意义:表示查察已经 add 到暂存区但是尚未 commit 的内容同最新一次 commit 的内容的差异
      • 也可以指定版本库:git  diff  --cached  版本  文件名:


    • 工作目次 vs  Git堆栈:

      • git  diff  版本  文件名:

      • 意义:查察工作目次同 Git 堆栈指定 commit 的内容差异
      • 版本 == HEAD 时:查察工作目次同迩来一次 commit 的内容差异

    • Git  堆栈 vs Git 堆栈:

      • 查察 Git 堆栈恣意两次 commit 之间的差异:git  diff  版本  版本


    • 留意:

      • 以上命令不指定文件名,则对全部文件操作
      • 以上命令和 Git 堆栈对比的,均可指定 commit 的版本

        • HEAD:迩来一次 commit
        • HEAD^:上一次提交
        • HEAD~100:上100次提交




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

北冰洋以北

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表