之前給大家介紹了如何在iOS開發(fā)中使用Git來進行代碼管理,詳情請見通過Xcode配置Git。
但筆者曾經(jīng)在創(chuàng)建和使用Git過程中遇到一些問題。筆者強烈建議大家在一開始配置Git時就考慮到這個問題,避免以后出現(xiàn)之后再去修改。因為筆者自己也折騰了許久,也麻煩了運維工程師一起協(xié)助,很是麻煩。
在從遠端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哪些文件不需要添加到版本管理中,實際在我們開發(fā)中,很多文件是不需要版本管理的。這個.gitignore文件的內(nèi)容相當于是一些規(guī)則,Git會根據(jù)規(guī)則來判斷是否將文件添加到版本管理中。
我們需要在工程目錄下創(chuàng)建一個.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中查看目錄,發(fā)現(xiàn).gitignore文件已經(jīng)成功提交。
上面的方法是我比較推薦的方法,可以保證這個工程里的所有修改者都能自動應用這套規(guī)則,而不用再寫一份,保證了所有修改者運用的都是同一份規(guī)則,比較省事。缺點是只能在本工程起作用。
我們還可以配置全局的忽略文件,這個操作可以使得以后我們在創(chuàng)建其他工程時,只要是Git管理的工程,在提交時都會自動排除響應的文件,對開發(fā)者來說比較省事,只需要一次全局配置,不需要每次新建工程都要配置一遍過濾規(guī)則。但是這個方法也有缺點,無法保證其他開發(fā)者在克隆你的代碼后,他們那邊的規(guī)則跟你的是一樣的,容易帶來一些沖突問題。
打開終端,輸入:git config --global core.excludesfile ~/.gitignore
后面跟的是 .gitignore文件位置。你可以更改。但是那個路徑下 必須存在那個配置文件。
配置完.gitignore文件后,我們可以在工程目錄中查看,假如看不到,可能是因為默認開啟了隱藏文件,在工程目錄中,點擊command+shift + .(句號),即可顯示隱藏的文件,可以看到我們的工程中有一個Git文件夾,一個.gitignore文件。
從此,我們再在Xcode中commit時就不會看到各種煩人的不必要的文件顯示了,只需要提交我們真正的核心代碼文件就可以了,也不用擔心這些煩人的文件造成各種沖突啦~~~