Git中的使用.gitignore忽略不想要提交的文件
Posted 凡夫贩夫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git中的使用.gitignore忽略不想要提交的文件相关的知识,希望对你有一定的参考价值。
1. .gitignore的作用
在实际的工程项目中,除了项目本身的代码文件、配置文件外,还有一些文件或目录并不需要纳入版本管理中,如idea工具会在工程根目录生成一个.idea的目录、工程编译后生的target等。因此在提交代码文件的时候需要自动把这些目录或文件自动忽略掉。在Git工作区的根目录下创建一个特殊的.gitignore文件,并配置一定的忽略规则,Git就会自动忽略这些文件或目录,避免不必要的文件上传到远程。
2. 忽略规则的匹配语法
对于不同的语言的工程项目,其具体需要忽略的内容是不一样的,但是忽略规则配置是遵循相同的语法规则的,具体如下:
- 注释使用#开头,后面跟注释内容。
- 在.gitignore文件中,每一行表示一种模式。
- 如果被忽略的文件已经纳入到了版本控制管理中(即已受控状态,文件被add后就表示已经受控)时,即使在.gitignore文件中设置了忽略也不会起作用。
- 同一个仓库的所有人使用同一个.gitignore文件,.gitignore文件本身需要上传到远程仓库。
- ! 开头的模式表示反向操作,该文件将会再次被包含,如果忽略了该文件的父级目录,则使用 ! 也不会使该文件再次被包含。
- / 结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件
- / 开始的模式匹配项目根目录
- 如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容(目录和文件),如果该模式不在 .gitignore 文件中,则相对于项目根目录
- ** 匹配多级目录,可在开始,中间,结束
- ? 通用匹配单个字符
- * 通用匹配零个或多个字符
- [] 通用匹配单个字符列表
其实忽略规则的匹配语法和正则表达式比较类似,如果对正则表达式比较熟悉的话,理解这个规则相对容易得多。
3. 举例说明
这里举例说明几个常用的场景:
- bin:表示忽略.gitignore文件所在目录下所有的bin目录和bin文件
- bin/: 表示忽略.gitignore文件所在目录下的所有bin目录及子目录下的内容都会被忽略
- /bin: 表示忽略.gitignore文件所在目录下bin目录的内容,其他目录的bin文件和目录不受影响
- *.log: 表示忽略.gitignore文件所在目录下及子目录下的所有含有.log 文件和目录
- /**/*.c:表示忽略.gitignore文件所在目录下及子目录下的所有含有.c的文件和目录
4.java中常用的.gitignore
这里举例说明java项目中常用的忽略模式,实际可以根据实际需求自由裁剪。
# Created by .ignore support plugin (hsz.mobi)
### Java template
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
5. idea中的.ignore插件
5.1 安装
在idea中安装.ignore插件,有两种方法:
一、直接在线安装file--->plugins--->browse repositories--->搜索.ignore--->install;
二、在idea官网下载与自己所有idea版本匹配的.ignore插件,然后file--->plugins--->install plugin from disk;
5.2 使用
如果所在工程项目内没有.gitigonre文件,可以通过file--->new--->.ignore file--->.gitigore file(git)创建一个,创建的时候还可以选择工程所用的语言、工具等信息。如果使用idea开发java项目,java、jetbrains最好选中。
已经有了.gitignore文件后,在想要忽略的文件或目录上右键弹窗--->add to .gitignore file,就可以忽略想要的文件或目录了。
6.总结
系统性的梳理了一下.gitignore文件的作用、匹配语法、如何结合idea编程工具来使用.ignore插件,其实没有那么复杂,so easy!
使用 .gitignore 忽略 Git 仓库中的文件
.gitignore
在Git中,很多时候你只想将代码提交到仓库,而不是将当前文件目录下的文件全部提交到Git仓库中,例如在MacOS系统下面的.DS_Store
文件,或者是Xocde的操作记录,又或者是pod库的中一大串的源代码。这种情况下使用.gitignore
就能够在Git提交时自动忽略掉这些文件。
忽略的格式
#
:此为注释 – 将被 Git 忽略*.a
:忽略所有.a
结尾的文件!lib.a
: 不忽略lib.a
文件/TODO
:仅仅忽略项目根目录下的TODO
文件,不包括subdir/TODO
build/
: 忽略build/
目录下的所有文件doc/*.txt
: 会忽略doc/notes.txt
但不包括doc/server/arch.txt
创建方法
从 github 上获取
github上整理了一些常用需要的项目中需要忽略的文件配置,根据需要进行获取
https://github.com/github/gitignore.git
与 Xcode 相关的三个文件
- Xcode.gitignore
- Objective-C.gitignore
- Swift.gitignore
Xcode.gitignore
忽略 Xcode
配置信息,如操作记录,默认打开窗口等
其他两个在 Xcode.gitignore
基础上针对不同的语言进行忽略
将这些文件重写命名为 .gittignore
$ mv Swift.gitignore .gittignore
通过 gitignore.io 创建(推荐)
先自定义终端命令:
macOS下默认是\\#!/bin/bash
:
$ echo "function gi() curl -L -s https://www.gitignore.io/api/\\$@ ;" >> ~/.bash_profile && source ~/.bash_profile
如果是 #!/bin/zsh
$ echo "function gi() curl -L -s https://www.gitignore.io/api/\\$@ ;" >> ~/.zshrc && source ~/.zshrc
使用
在当前终端目录下
$ gi swift > .gitignore
就会针对 Swifit 类型的工程创建 .gitignore
文件。
以上是关于Git中的使用.gitignore忽略不想要提交的文件的主要内容,如果未能解决你的问题,请参考以下文章
如何创建.gitignore文件,忽略git不必要提交的文件