git 忽略文件


             之前公司都是用SVN做项目代码版本管理也需要做忽略文件,

现在中金的是用git做版本管理, 借此说下iOS用Xcode开发中,用git提交代码时, 

如何忽略本地不必要的文件。


  比如说忽略  .DS_Store, xcuserdata/  或者某些有framework的文件夹等


设置.gitignore文件只对当前设置的项目有效果,不是全局的其他项目有效果


1.首先查看你xcode项目目录下有没有隐藏文件.gitignore(如何显示和隐藏文件请参考上一篇博客的解决方法)

    请先显示系统的隐藏文件

   若有.gitignore直接用记事本编辑器打开。

   若没有.gitignore文件,请用终端命令,cd到你的项目目录下。用touch .gitignore命令新建一个.gitignore文件


2.在git 忽略文件.gitignore内添加要忽略的文件,保存即可生效

   比如我的如下:   (其中#号开头的会被git忽略,相当于我们开发注释 // )


 #Xcode
.DS_Store
ModuleFrameworks/
xcuserdata/ 

你可以根据你不想提交的文件或者文件夹路径下的,添加到忽略文件中。
网上GitHub上有已经写好的相关各种语言工程忽略文件,你只需下载好,去掉文件名前缀,只留.gitignore。
 https://github.com/github/gitignore 

拓展:

常用的规则:
1)/mtk/               过滤整个文件夹
2)*.zip                过滤所有.zip文件
3)/mtk/do.c         过滤某个具体文件

很简单吧,被过滤掉的文件就不会出现在git仓库中(gitlab或github)了,当然本地库中还有,只是push的时候不会上传。
需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中:
1)!*.zip
2)!/mtk/one.txt

唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。
为什么要有两种规则呢?想象一个场景:假如我们只需要管理/mtk/目录中的one.txt文件,这个目录中的其他文件都不需要管理,那么我们就需要使用:
1)/mtk/
2)!/mtk/one.txt
假设我们只有过滤规则,而没有添加规则,那么我们就需要把/mtk/目录下除了one.txt以外的所有文件都写出来!


3. 项目在添加忽略文件之前,文件都添加版本控制被track,则忽略文件无效。
  
 

原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

最后,再  git  push   到远程仓库

注意:这种半路加入忽略文件,改成未track状态提交再PUSH到远程容易将忽略文件在远程操库删除!

当重新克隆这个项目的时候回会缺少忽略文件内所写的文件

   




4.使用本地.git/info/exclude

git 还提供了另一种 exclude 的方式来做同样的事情,不同的是 .gitignore 这个文件本身会提交到版本库中去。用来保存的是公共的需要排除的文件。而 .git/info/exclude 这里设置的则是你自己本地需要排除的文件。 他不会影响到其他人。也不会提交到版本库中去。
举例:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
.gradle/
.idea/
.settings/
appcompat_v7/
bin/
build/
gen/
gradle/
out/
proguard/
ship/
target/
.classpath
.gitignore
.idea
.project
.readme
.update-config
*.iml
local.properties




你可能感兴趣的:(iOS开发)