Git 忽略文件.gitignore

.gitignore

  • .gitignore文件用来忽略指定文件或者文件夹的修改;
  • 被记录在.gitignore中的文件或文件夹,会被Git忽略,不会推到远程仓库;
  • 文件已存到远程仓库中,添加到.gitignore文件,是无法忽略的;

记录顺序:

  • 一、.gitignore文件;
  • 二、两种过滤模式;
  • 三、通配符;
  • 四、已提交到远程的文件,想忽略它;

一、.gitignore文件

  • 终端,遍历到项目文件路径:
  • 创建.gitignore
touch .gitignore
  • 打开gitignore
vim .gitignore 
  • 输入配置配置 (示例:Xcode项目忽略的文件)
# Xcode
.DS_Store

## Build generated
build/
DerivedData/

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/

## Other
*.moved-aside
*.xccheckout
*.xcworkspace
!default.xcworkspace

## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM

# CocoaPods
Pods
!Podfile
!Podfile.lock

# Carthage
Carthage/Build

# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output

# Code Injection
iOSInjectionProject/

生成配置的网站

gitignore.io

gitignore.io.png

在网站上输入Objective-C和Swift会生成一份配置;


配置.png

参考资源:
https://bingozb.github.io/37.html
https://www.cnblogs.com/haiq/archive/2012/12/26/2833746.html
https://www.cnblogs.com/kevingrace/p/5690241.html

二、两种过滤模式

.gitignore文件过滤有两种模式:

  • 开放模式
  • 保守模式

1- 开放模式

  • 过滤文件夹
build/
  • 过滤文件
*.ipa
fastlane/report.xml  
fastlane/*    //fastlane目录下的所有内容,包括子目录;
/fastlane/*   //根目录下,/fastlane/目录的所有内容;

2- 保守模式

  • 通过!设置不过滤哪些文件,即希望这些文件的修改会被Git跟踪;
!Podfile
!src/
  • 使用场景:
    需要过滤文件夹下的大部分文件,只跟踪其中一个文件:
fastlane/*  //注意:文件夹后要加上/*,否则无法实现效果;
!fastlane/report.xml

三、通配符

  • ! 表示不忽略;
  • * 匹配任意字符;
  • ?匹配一个字符;
  • [] 匹配括号内的单个字符;
  • -表示连贯的字符;
  • ^表示除外;
*.log  
demo_1?.txt 
demo[0-9]  //匹配0~9的单个字符;
demo[^0-9]  //匹配除去0~9的单个字符

四、已提交到远程的文件,想忽略它

  • 1- 先添加文件到.gitignore文件中;
  • 2- git rm -r --cached .命令删除本地目录的缓存
  • 3- 更新到远程;
git rm -r --cached . 
git add .
git commit -m "更新gitignore文件"
git push origin master

清除单个文件的缓存:

git rm --cached <文件>

.gitkeep的作用

Git无法追踪一个空文件夹

  • 用户需要追踪一个空文件夹时,把.gitkeep文件放到文件夹下里;
  • 在.gitignore中添加需要忽略的文件夹;
# .gitignore 
work/*
!.gitkeep

Git忽略work文件夹下,除.gitkeep外的所有文件;
Git就可以实现追踪空文件夹;

你可能感兴趣的:(Git 忽略文件.gitignore)