.gitignore小结

一、背景

  在使用Maven进行依赖管理的项目中,有用的文件基本上就是src目录和pom.xml文件。当我们在使用Eclipse、Intellij Idea或其他的IDE导入Maven项目后,都会在项目的根目录下生成和IDE相关的配置文件,有些文件可能还依赖当前的计算机。因为这些配置文件对项目无关紧要,只对当前的电脑和IDE有效。这些文件如果上传到代码仓库,其他伙伴pull代码后在另外一台电脑上运行时可能出现各种错误。因此,我们在版本控制中要忽略这类配置文件。

  在git中忽略配置文件很简单,在项目的顶层目录或具体某个目录中添加一个名为“.gitignore”的文件即可。

  在Windows系统下,仅有文件扩展名而无文件名字时,无法创建成功。这种情况下有两种创建方式。

方式一: 打开“CMD”或者“Git Bash”,输入下面的命令:

$ echo ''>.gitignore

方式二:

  创建一个文件,文件名为:“.gitignore.”,注意前后都有一个点。保存之后系统会自动重命名为“.gitignore”。


二、.gitignore 的格式规范如下:

  • 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
  • 可以使用标准的glob模式匹配。所谓glob模式是指shell所使用的简化了的正则表达式,详见:glob 模式
  • 匹配模式可以以(/)结尾,说明要忽略的是目录。
  • 匹配模式可以以(/)开头,防止递归。(此时路径是相对于该项目的根目录而言)
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

  例如:

  • gng/ :包含gng/的目录都包含在内,如src/demo/gng会被侧地忽略
  • /gng/ :过滤整个文件夹,这个路径是相对于该项目的根目录而言的
  • *.zip :过滤所有.zip文件
  • /gng/do.c :过滤某个具体文件
  • *.[oa]和!test.a:表明忽略除test.a文件以外的后缀名为.a或者.o的文件

三、.gitignore文件通用模板

  除了知道这些基本的规则之外,还需要设置一些通用的模板,帮助我们快速的开发。在GitHub上有一个十分详细的针对数十种项目及语言的.gitignore文件列表。地址链接

# Eclipse
.classpath
.project
.settings/
# Intellij
.idea/
*.iml
*.iws
*.ipr
/out/
# Mac
.DS_Store
# Maven
log/
target/
build/
# Package Files #
*.jar
*.war
*.ear
*.zip
*.tar.gz
*.rar
# Log file
*.log
# Java
*.class
*-api/target/
*-api-impl/target/
*-data/target/
*-common/target/
*-service/target/
*-rpc/target/
exitStatus*
# svn
.svn/
# Other
*.versionsBackup
tmp
temp


/.idea/
/bin/

四、定义Git全局的 .gitignore 文件

  除了可以在项目中定义 .gitignore 文件外,还可以设置全局的 git .gitignore 文件来管理所有Git项目的行为。这种方式在不同的项目开发者之间是不共享的,是属于项目之上Git应用级别的行为。

  这种方式也需要创建相应的 .gitignore 文件,可以放在任意位置。然后在使用以下命令配置Git:

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

五、创建.gitignore文件要趁早

  如果你不慎在创建.gitignore文件之前就push了项目,那么即使你在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理——.gitignore文件中的过滤规则只能影响那些当前还未交由Git来管理的文件。若一个文件已经被现有版本包含了,那么git status命令依然会显示该文件上的所有修改,并可以通过git add命令被注册到下一次提交中。

  简单来说,出现这种问题的原因是Git已经开始管理这些文件了,所以无法再通过过滤规则过滤它们。因此一定要养成在项目开始就创建.gitignore文件的习惯,否则一旦push,就需要忽略已被版本化的文件,这种情况的处理更复杂。 若想忽略一个已经被版本化的文件,可以通过update-index命令的--assume-unchanged选项来做到这一点。详见:GIT用git update-index命令忽略已经在版本控制并已提交过的文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值