Git是非常流行的版本控制工具,相信程序员这个群体没有不知道Git的,熟练掌握并使用非常有必要。在工作中,多人协作,经常会出现项目冲突,导致自己本地项目跑不起来,主要是一些个人配置被提交到了代码库,导致此问题。,每次git status都会显示Untracked files ...,逼死强迫症。如何解决呢?好在Git替我们想到了,在项目根目录下面,创建一个.gitignore文件,填入需要忽略的文件路径,Git就会自动忽略这些文件,相当方便。我们不需要从头编写.gitignore文件,Github上有一个gitignore开源项目,为我们准备了各种项目所需的.gitignore文件,我们只需要组合使用即可。项目地址 .gitignore
忽略原则
拿Android项目举例来说:
- 忽略操作系统自动生成的文件,比如:
.DS_Store文件 - 忽略项目自动生成的文件,比如:
.idea文件 - 忽略项目编译生成的文件,比如:
build文件 - 忽略本地带有敏感信息的配置文件,比如:存放口令与密码的配置文件
Android .gitignore文件
这是 gitignore 项目中,给出的 Android 项目 .gitignore 配置文件。可做参考。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82# Built application files
*.apk
*.ap_
*.aab
# Files for the ART/Dalvik VM
*.dex
# Java class files
*.class
# Generated files
bin/
gen/
out/
release/
# Gradle files
.gradle/
build/
# Local configuration file (sdk path, etc)
local.properties
# Proguard folder generated by Eclipse
proguard/
# Log Files
*.log
# Android Studio Navigation editor temp files
.navigation/
# Android Studio captures folder
captures/
# IntelliJ
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
.idea/navEditor.xml
# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
#*.jks
#*.keystore
# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
# Google Services (e.g. APIs or Firebase)
# google-services.json
# Freeline
freeline.py
freeline/
freeline_project_description.json
# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md
# Version control
vcs.xml
# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
# lint/reports/
.gitignore 常用匹配语法
常见的忽略匹配语法:1
2
3
4
5
6
7
8
9
10
11"#" 开头的文件表示注释,会被git忽略
"/" 表示文件目录
"/"结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;
"/"开始的模式匹配项目跟目录
"*" 通配多个字符
"**" 匹配任意中间目录
"!" 表示否定,不忽略此文件
举例说明:
1 | *.apk 表示忽略所有 .apk 结尾的文件 |
已被忽略的如何加入Git
可以使用如下命令1
2
3git add -f "file name" 强制添加到git
git rm --cached "file" 被忽略的文件误添加,可以使用rm命令将其从中移除
或者怀疑可能是.gitignore文件写的不对,需要查看是哪里写错了,可以使用git check-ignore。我们可以知道是哪个规则导致忽略了文件,从而修改规则。
1 | git check-ignore -v "file name" |
总结:
.gitignore要首先添加到版本控制中,如果在创建.gitignore之前已经push了项目,即使你在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理。
如果你已经把不想上传的文件上传到了Git仓库,那么你必须先从远程仓库删了它,我们可以从远程仓库直接删除然后pull代码到本地仓库这些文件就会本删除,或者从本地删除这些文件并且在.gitignore文件中添加这些你想忽略的文件,然后再push到远程仓库。
为了避免这种麻烦的操作,必须养成项目开始就创建编写.gitignore文件,好习惯,事半功倍。