之前给大家介绍了如何在iOS开发中使用Git来进行代码管理,详情请见通过Xcode配置Git。
但笔者曾经在创建和使用Git过程中遇到一些问题。笔者强烈建议大家在一开始配置Git时就考虑到这个问题,避免以后出现之后再去修改。因为笔者自己也折腾了许久,也麻烦了运维工程师一起协助,很是麻烦。
在从远端pull的过程中,有时会遇到失败的情况,会提示
Auto-merging .DS_Store CONFLICT (content): Merge conflict in .DS_Store Automatic merge failed;
这个情况主要是因为我们在提交时提交了.DS_Store文件,在pull的过程中我们本地的.DS_Store和远端的.DS_Store有冲突,造成pull失败。这个文件是Mac OS X的一种特性,这个文件是用来存储这个文件夹的属性,比如文件图标的摆放位置。而且这个文件在我们的Mac中默认是隐藏的。
一般来说每个Git项目中都需要一个.gitignore文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中,实际在我们开发中,很多文件是不需要版本管理的。这个.gitignore文件的内容相当于是一些规则,Git会根据规则来判断是否将文件添加到版本管理中。
我们需要在工程目录下创建一个.gitignore文件,就是Git忽略文件,可以使得我们在使用Git时自动忽略相关的文件,避免多人提交代码时形成不必要的冲突。
首先在这里https://github.com/github/gitignore 下载.gitignore,然后找到Objective-C.gitignore这个文件,放到项目根目录(Swift对应的文件也有,也可以用Xcode打开,自己修改忽略文件)。之后打开终端,进行如下操作:
第一步,改名,去掉.之前的语言标识字符串
mv Objective .gitignore .gitignore
第二步,提交一次工程到仓库
git add .
git commit -m "随便写"
git push
然后就可以进入项目的远端GitBlit中查看目录,发现.gitignore文件已经成功提交。
上面的方法是我比较推荐的方法,可以保证这个工程里的所有修改者都能自动应用这套规则,而不用再写一份,保证了所有修改者运用的都是同一份规则,比较省事。缺点是只能在本工程起作用。
我们还可以配置全局的忽略文件,这个操作可以使得以后我们在创建其他工程时,只要是Git管理的工程,在提交时都会自动排除响应的文件,对开发者来说比较省事,只需要一次全局配置,不需要每次新建工程都要配置一遍过滤规则。但是这个方法也有缺点,无法保证其他开发者在克隆你的代码后,他们那边的规则跟你的是一样的,容易带来一些冲突问题。
打开终端,输入:git config --global core.excludesfile ~/.gitignore
后面跟的是 .gitignore文件位置。你可以更改。但是那个路径下 必须存在那个配置文件。
配置完.gitignore文件后,我们可以在工程目录中查看,假如看不到,可能是因为默认开启了隐藏文件,在工程目录中,点击command+shift + .(句号),即可显示隐藏的文件,可以看到我们的工程中有一个Git文件夹,一个.gitignore文件。
从此,我们再在Xcode中commit时就不会看到各种烦人的不必要的文件显示了,只需要提交我们真正的核心代码文件就可以了,也不用担心这些烦人的文件造成各种冲突啦~~~
网友评论