前言

在用 Git 进行代码管理的过程中,我们会发现后添加进去的 .gitignore 文件,或者是中途修改了.gitignore 文件后,.gitignore 文件并没有生效,需要清楚.track缓存和强制.track来解决问题。如果我们在第一次提交的时候,忘记添加 .gitignore 文件或者在首次添加了 .gitignore 文件之后,又对 .gitignore 文件进行了修改,你会发现这两种情况下,.gitignore 文件是不生效的!

.gitignore 使用

我们第一次创建项目和上传项目的时候,是没有.gitignore文件的,我们需要自己配置,这里讲的是Android Studio中怎么使用.gitignore,关于第一次如何上传项目到gitlab,请参考​​gitlab入门篇​​。

Android Studio中 .gitignore配置_管理


从以上提交的结果可以看出,没有添加 Android 工程应有的 .gitignore 文件,我们可以去​​https://github.com/github/gitignore​​下载一个,也可以拷贝之前的项目的.gitignore。然后我们将此 .gitignore 文件添加到gitlab仓库中。

Android Studio中 .gitignore配置_ide_02


注:如果你发现你添加了 .gitignore 文件之后,.gitignore 文件的变化没有被 track,那么你需要去 SourceTree 的全局 .gitignore_global 文件中查看 .gitignore 文件是不是被声明了不被 track的。

查看gitignore_global

一次选择工具–选项–git–Global Ignore List

接下来我们修改一个文件在尝试提交,就会发现没有之前那么多了。

Android Studio中 .gitignore配置_android_03


从上图中我们可以看到 .java 文件编译产生的 .class 文件依然被 track。由于缓存的原因,当在提交之后添加 .gitignore 文件,或者在 .gitignore 文件中增加或者删除,都是无效的。

那么我们需要怎么做呢,我们需要清除track的缓存,首先我们可以通过 SourceTree 界面中的 Terminal 打开 Git 命令行终端。

Android Studio中 .gitignore配置_android_04


输入清除命令

git rm -r –cached .

添加更改变化

git add

备注:此命令,你可以通过 SourceTree 这样的可视化客户端来通过勾选 unstaged files 来操作。接下来输入命令:

git commit

操作完上面的步骤之后我们就会看到。

Android Studio中 .gitignore配置_xml_05


然后我们终于看到.gitignore 文件生效了。

Android Studio中 .gitignore配置_android_06

其他

新增文件

实际应用中,我们往往随着业务的增加,会不断的增加文件,比如我们天津 .txt 文件,不让 .txt 文件被 track,我们还是按照刚才的步骤来操作即可!

Android Studio中 .gitignore配置_ide_07


我们就会发现现在sourcetree提交的时候就会忽略掉这种文件。

Android Studio中 .gitignore配置_xml_08


删除文件

比如,我们现在移除 .class 类型的文件,那么我们需要怎么做呢?

Android Studio中 .gitignore配置_android_09


对于以上情况,我们需要用到强制提交的命令:

git add -f *.class

我们修改一下 .java 文件然后保存,看看产生的编译文件 .class 是否再次被 track,答案是肯定的!

Android Studio中 .gitignore配置_git_10

说明:Git 代码管理中,我们在没有添加 .gitignore 文件的前提下提交了代码之后再提交 .gitignore 文件,或者是中途添加某一文件类型到 .gitignore 文件中,需要通过以下命令行的方式,让 .gitignore 文件生效:

git rm -r –cached .
git add .
git commit -m “Refresh adding .gitignore file.”

如果是中途从 .gitignore 文件中移除某一文件类型,想要这个文件类型重新被 track,需要通过以下命令行的方式,让 .gitignore 文件生效:

git add -f *.class
git commit -m "说明"

最后附上android 常见的一段.gitignore:

#built application files
*.apk
*.ap_


# files for the dex VM
*.dex


# Java class files
*.class


# generated files
bin/
gen/


# Local configuration file (sdk path, etc)
local.properties


# Windows thumbnail db
Thumbs.db


# OSX files
.DS_Store


# Eclipse project files
.classpath
.project


# Android Studio
.idea
#.idea/workspace.xml - remove # and delete .idea if it better suit your needs.
.gradle
build/


# Signing files
.signing/


# User-specific configurations
.idea/libraries/
.idea/workspace.xml
.idea/tasks.xml
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/vcs.xml
*.iml

参考:​​https://github.com/github/gitignore/blob/master/Android.gitignore​