CocoaPods - .gitignore配置

Git 忽略規(guī)則

一般來說每個Git項目中都需要一個“.gitignore”文件疾层,這個文件的作用就是告訴Git哪些文件不需要添加到版本管理中却邓。實際項目中粱胜,很多文件都是不需要版本管理的亡嫌,比如Python的.pyc文件和一些包含密碼的配置文件等等。這個文件的內容是一些規(guī)則泵额,Git會根據這些規(guī)則來判斷是否將文件添加到版本控制中。

下面我們看看常用的規(guī)則:
1)/mtk/ 過濾整個文件夾
2)*.zip 過濾所有.zip文件
3)/mtk/do.c 過濾某個具體文件

很簡單吧携添,被過濾掉的文件就不會出現在git倉庫中(gitlab或github)了嫁盲,當然本地庫中還有,只是push的時候不會上傳烈掠。
需要注意的是羞秤,gitignore還可以指定要將哪些文件添加到版本管理中:
1)!*.zip
2)!/mtk/one.txt

唯一的區(qū)別就是規(guī)則開頭多了一個感嘆號,Git會將滿足這類規(guī)則的文件添加到版本管理中左敌。
為什么要有兩種規(guī)則呢瘾蛋?想象一個場景:假如我們只需要管理/mtk/目錄中的one.txt文件,這個目錄中的其他文件都不需要管理矫限,那么我們就需要使用:
1)/mtk/
2)!/mtk/one.txt
假設我們只有過濾規(guī)則哺哼,而沒有添加規(guī)則,那么我們就需要把/mtk/目錄下除了one.txt以外的所有文件都寫出來叼风!

最后需要強調的一點是取董,如果你不慎在創(chuàng)建.gitignore文件之前就push了項目,那么即使你在.gitignore文件中寫入新的過濾規(guī)則无宿,這些規(guī)則也不會起作用茵汰,Git仍然會對所有文件進行版本管理。
簡單來說孽鸡,出現這種問題的原因就是Git已經開始管理這些文件了蹂午,所以你無法再通過過濾規(guī)則過濾它們坡垫。因此一定要養(yǎng)成在項目開始就創(chuàng)建.gitignore文件的習慣,否則一旦push画侣,處理起來會非常麻煩冰悠。

Xcode項目的 .gitignore 配置

git版本控制的時候,有很多非代碼文件也會被跟蹤配乱,比較常見的如一些影藏文件DS_Store溉卓、以xcworkspace、xcuserstate搬泥、xcuserdata等結尾的狀態(tài)文件等桑寨。為了不把這些文件加入版本控制體系中,我們需要進行以下三步設置忿檩,注意尉尾,每一步必不可少,也不可交換位置燥透,下文會具體解釋原因沙咏。
第一步:進入git的代碼倉庫,執(zhí)行以下的代碼

// 刪除已被git管理的文件
git rm --cached *.xcuserstate
git rm --cached *.xcuserdata

這兩行代碼(或者可以有更多班套,自己修改后綴名即可肢藐,這里列出了常見的兩種隱藏文件)表示不再追蹤以這些后綴結尾的文件,注意這里的文件在執(zhí)行代碼前其實已經被追蹤(Tracked)吱韭,執(zhí)行完后吆豹,將不再被追蹤。

// 刪除已被git管理的文件目錄
git rm --cached -r Pods/

第二部:修改.gitignore文件:

vim .gitignore

這時候會進入gitignore的文件的編輯界面理盆,如果這個文件已經存在痘煤,則可以通過普通的文本編輯器直接進行修改(需要設置顯示隱藏文件),復制以下內容進入.gitignore文件猿规。

ignore.io推薦

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

### Xcode ###
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

## Build generated
build/
DerivedData/

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/

## Other
*.moved-aside
*.xccheckout
*.xcscmblueprint

### Xcode Patch ###
*.xcodeproj/*
!*.xcodeproj/project.pbxproj
!*.xcodeproj/xcshareddata/
!*.xcworkspace/contents.xcworkspacedata
/*.gcno


# End of https://www.gitignore.io/api/xcode

如果使用CocoaPods衷快,建議將 'Pods/' 添加到忽略文件中:

# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
#
Pods/
Podfile.lock

按esc鍵退出編輯,輸入:wq保存文件坎拐。
注意這里的gitignore文件的修改烦磁,僅對未追蹤(Untracked)的文件生效,所以首先要執(zhí)行第一步哼勇,取消對以上類型文件的追蹤都伪。

第三步:提交此處版本修改

git commit -m "Modify .gitignore"

記得要執(zhí)行此次提交,否則之前的修改不被保存积担。

重啟Xcode并且嘗試修改一個文件后執(zhí)行commit陨晶,發(fā)現那些與代碼無關的文件并不會被自動提交了。

Git 忽略規(guī)則及 .gitignore 規(guī)則不生效的解決辦法

在git中如果想忽略掉某個文件,不讓這個文件提交到版本庫中先誉,可以使用修改根目錄中 .gitignore 文件的方法(如無湿刽,則需自己手工建立此文件)。這個文件每一行保存了一個匹配的規(guī)則例如:

# 此為注釋 – 將被 Git 忽略
*.a # 忽略所有 .a 結尾的文件
!lib.a # 但 lib.a 除外
/TODO # 僅僅忽略項目根目錄下的 TODO 文件褐耳,不包括 subdir/TODO
build/ # 忽略 build/ 目錄下的所有文件
doc/*.txt # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

規(guī)則很簡單诈闺,不做過多解釋,但是有時候在項目開發(fā)過程中铃芦,突然心血來潮想把某些目錄或文件加入忽略規(guī)則雅镊,按照上述方法定義后發(fā)現并未生效,原因是.gitignore只能忽略那些原來沒有被track的文件刃滓,如果某些文件已經被納入了版本管理中仁烹,則修改.gitignore是無效的。那么解決方法就是先把本地緩存刪除(改變成未track狀態(tài))咧虎,然后再提交:

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

注意:
不要誤解了 .gitignore 文件的用途卓缰,該文件只能作用于 Untracked Files,也就是那些從來沒有被 Git 記錄過的文件(自添加以后砰诵,從未 add 及 commit 過的文件)征唬。
如果文件曾經被 Git 記錄過,那么.gitignore 就對它們完全無效胧砰。

參考:
ignore.io推薦
iOS開發(fā)中的git忽略文件
Xcode git版本控制忽略無關文件
Git忽略規(guī)則.gitignore梳理

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末鳍鸵,一起剝皮案震驚了整個濱河市苇瓣,隨后出現的幾起案子尉间,更是在濱河造成了極大的恐慌,老刑警劉巖击罪,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哲嘲,死亡現場離奇詭異,居然都是意外死亡媳禁,警方通過查閱死者的電腦和手機眠副,發(fā)現死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竣稽,“玉大人囱怕,你說我怎么就攤上這事『帘穑” “怎么了娃弓?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長岛宦。 經常有香客問我台丛,道長,這世上最難降的妖魔是什么砾肺? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任挽霉,我火速辦了婚禮防嗡,結果婚禮上,老公的妹妹穿的比我還像新娘侠坎。我一直安慰自己蚁趁,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布实胸。 她就那樣靜靜地躺著荣德,像睡著了一般。 火紅的嫁衣襯著肌膚如雪童芹。 梳的紋絲不亂的頭發(fā)上涮瞻,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音假褪,去河邊找鬼署咽。 笑死,一個胖子當著我的面吹牛生音,可吹牛的內容都是我干的宁否。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼缀遍,長吁一口氣:“原來是場噩夢啊……” “哼慕匠!你這毒婦竟也來了?” 一聲冷哼從身側響起域醇,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤台谊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后譬挚,有當地人在樹林里發(fā)現了一具尸體锅铅,經...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年减宣,在試婚紗的時候發(fā)現自己被綠了盐须。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡漆腌,死狀恐怖贼邓,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情闷尿,我是刑警寧澤塑径,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站悠砚,受9級特大地震影響晓勇,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一绑咱、第九天 我趴在偏房一處隱蔽的房頂上張望绰筛。 院中可真熱鬧,春花似錦描融、人聲如沸铝噩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骏庸。三九已至,卻和暖如春年叮,著一層夾襖步出監(jiān)牢的瞬間具被,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工只损, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留一姿,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓跃惫,卻偏偏與公主長得像叮叹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子爆存,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內容

  • 本文為 Git教程的學習筆記蛉顽,教程源自廖雪峰的博客。這是一個由淺入深先较,學完后能立刻上手的Git教程携冤。另,附上另一本...
    七弦桐語閱讀 6,247評論 5 47
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言苞笨,發(fā)作 oo-boon-too 的音债朵。了解發(fā)音是有意...
    螢火蟲de夢閱讀 99,270評論 9 467
  • 備注(寫這么個標題主要是明確的吸引和我曾經有同樣問題的人,當我寫vue時急于求成我直接用了官方的腳手架瀑凝,并沒有自己...
    sky_rainbow閱讀 1,346評論 0 3
  • 很長時間又沒有更新了序芦。大巴的寫作界面仍然停留在老的樣式,要是有簡書這樣的簡潔的界面就好了粤咪,此為題外話谚中。 春節(jié)過年回...
    frankqpfu閱讀 264評論 0 0