Git之忽略文件篇

使用gitignore忽略文件

当我们进行项目开发,使用GIT协议进行协同的时候,需要忽略一些临时文件,以及compile,build相关的文件,又或者是IDE相关的文件等。可以使用.gitignore文件来忽略指定的文件,具体做法是在Git工程目录下新建.gitignore文件,然后添加相应的忽略规则。那么问题来了,如何在Windows环境下新建以”.gitignore”命名的文件呢?
做法如下:

  1. 在目录下右键,选择Git Bash,进入命令行。
  2. 键入touch .gitignore便可以在目录下生成一个空的.gitignore文件。
  3. 使用vim命令编辑.gitignore文件,添加忽略规则。

好了,上面有人会说vim不会用怎么办。没关系,你用记事本或者其他编辑器也可以编辑。本人推荐NotePad++,很好用有没有!

这里以Android工程为例,给出一个具体的.gitignore文件实例。gitignore文件的生成借助网站https://www.gitignore.io/

# Created by https://www.gitignore.io/api/android

### Android ###
# Built application files
*.apk
*.ap_

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/

# 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/libraries

# Keystore files
*.jks

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild

### Android Patch ###
gen-external-apklibs

忽略已经提交的文件

.gitignore文件有个很重要的事实是它只能对未提交的文件进行忽略,如果文件已经提交,那么你再添加相应的规则,这时候并不会起作用。
举个例子,对于一个Android工程我已经按照上述的.gitignore文件写好,并且项目已经commit了。这时候我发现工程中有个配置文件config.xml其实不用提交,因为这个config.xml中要配置服务器的IP以及端口什么的,每个人使用的IP端口并不相同,因此不必提交。这时候如果你在.gitignore中添加规则忽略config.xml已经无法生效了。
正确的做法是首先使用如下命令删除对于config.xml文件的track(追踪)

git rm --cached config.xml

然后更新.gitignore文件忽略掉config.xml,最后git commit。参考文献1对于该点的描述很好。

Git 如何做到忽略文件的修改,但服务器上仍保留一份

按照上面的方法,当你push之后,服务器的config.xml文件将被删除。如果只是想在本地忽略config.xml文件的修改,但是服务器保存一份副本应该怎么做呢?参考文献2给出了答案:
对于所有协同开发人员以及任何新加入的开发人员执行

git update-index --assume-unchanged config.xml

这样就可以在本地版本库中忽略config.xml文件的修改。但是,切记一点,这样做必须保证协同开发的所有人都执行此命令,但凡有一个人不执行,则config.xml文件的更改等到commit和push的时候便会更新到服务器而导致不愿发生的情形出现。
因此从这个观点出发,类似于这样的配置文件,我们可以提供了一个模板比如config.xml.demo给用户,当用户使用时按照具体需求再手动编辑转换为config.xml。

参考文献

  1. https://segmentfault.com/q/1010000000430426
  2. http://www.oschina.net/question/219038_246752
发布了30 篇原创文章 · 获赞 17 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/llfjfz/article/details/53489754