gitattribute踩坑實錄

工欲善其事,必先利其器竭鞍。

前一陣子,公司的版本控制從svn遷移到了git,不得不說橄镜,git確實比svn要強大好多偎快,單單是一個分支功能,就有很多值得學(xué)習(xí)的地方洽胶,通過git分支的版本控制晒夹,我們可以很方便的進行不同開發(fā)環(huán)境的切換。

先講一下姊氓,我們?yōu)槭裁匆鲩_發(fā)與正式環(huán)境的分離丐怯。以前使用svn的時候,我們沒有分環(huán)境之說翔横,這會導(dǎo)致一個問題读跷,那就是我們的開發(fā)版無法與線上的版本并存,如果你想要對照功能的話棕孙,就必須要刪掉另一個舔亭,因為二者的BundleID是一樣的。現(xiàn)在我們的APP通過git的版本控制分成了三個分支蟀俊,對應(yīng)著三個環(huán)境,分別是publish(正式環(huán)境)订雾,simulate(仿真環(huán)境肢预,接近正式環(huán)境),和develop(開發(fā)環(huán)境)洼哎,每一個環(huán)境都對應(yīng)著不同的info.plist配置文件烫映,它們各自的BundleID是不同的沼本,因此可以理解為三個軟件,這樣我們在切換分支的時候锭沟,就會進入不同的開發(fā)環(huán)境抽兆,方便很多,打包后也可以在手機上并存族淮。

現(xiàn)在來看辫红,分支切換是沒有什么問題的,然而在分支進行合并的時候祝辣,plist配置文件勢必會發(fā)生被覆蓋的情況贴妻,比如我從publish正式環(huán)境分出來一個功能分支func1進行相關(guān)功能的開發(fā),開發(fā)完后蝙斜,我需要先合并到develop上進行測試名惩,于是我切換到develop分支,將我的功能分支func1合并過去孕荠,合并完后娩鹉,會發(fā)現(xiàn)我的develop分支的配置文件,變成了publish的配置文件稚伍,于是我需要再手動的將這些變化改過來底循,這很明顯不是我們想要的結(jié)果,在講究時間成本的開發(fā)環(huán)境下槐瑞,這樣做無異于浪費熙涤。

如何在分支合并的時候,忽略掉一些指定的文件不讓它們發(fā)生合并呢困檩。

網(wǎng)上搜了一下祠挫,發(fā)現(xiàn)也有很多前輩遇到類似的問題,比如這篇文章悼沿,大致的做法就是通過gitattribute方法:

  • 在你的工程目錄下創(chuàng)建.gitattribute文件等舔,然后在其中寫入你想要忽略掉的文件,格式如下:
info.plist merge = ours
xxx.h merge = ours
//有多個的話糟趾,依次排列即可
  • 執(zhí)行git config merge.ours.driver true即可慌植。

網(wǎng)上的很多文章到此就為止了,然而這樣并不夠义郑。

由于開發(fā)的時候蝶柿,功能分支一定都是從publish分支出來,并且只存在publish分支(包括功能分支)合并到developsimuluate分支的情況非驮,因此我們只需要保證publish分支(包括功能分支)向別的分支合并時交汤,別的分支的配置文件不會覆蓋掉就可以了。

現(xiàn)在如果我們在publish分支下創(chuàng)建了gitattribute文件劫笙,并在里面按照上面的方法對info.plist文件進行合并忽略設(shè)置芙扎。然后我們從publish環(huán)境分出developsimulute分支星岗,并對devsim分支的plist文件進行修改,此時我們將publish分出來的功能分支func1往另外兩個分支合并的時候沒有問題戒洼,不會發(fā)生覆蓋俏橘。可是當(dāng)我們改變了publish分支下info.plist文件的任何一處后圈浇,再將publish(包括從其中分出來的功能分支)合并到別的分支的時候寥掐,info.plist文件又會被覆蓋掉。這個方法貌似就失效了汉额。

困惑了很久后曹仗,最終在stackoverflow和同事的幫助下,找到了答案蠕搜,發(fā)現(xiàn)這真是一個隱藏的坑怎茫,原來gitattribute方法生效是有條件的,跟文件的修改順序有關(guān)系妓灌,只有先修改的后來修改的合并的時候才會生效轨蛤。這里的先后是指文件的最后修改時間,不是創(chuàng)建的時間虫埂,如果最近修改過祥山,那它就是最新的,比如剛才的例子掉伏,我們修改了publish分支的info.plist缝呕,而沒有對另外兩個分支下的info.plist進行修改,那么publish分支下的info.plist就比另外兩個分支新斧散,這時候合并的時候供常,gitattribute就會失去作用,那么該如做呢鸡捐,我們在修改完publish分支后栈暇,需要再次修改另外兩個分支下的plist配置文件,即使沒啥可以改的箍镜,也要改(可以先改錯源祈,再改回去)這樣我們publish分支下的,就會仍然保持最舊色迂。

方法比較繁瑣香缺,但確實有效。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脚草,一起剝皮案震驚了整個濱河市赫悄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌馏慨,老刑警劉巖埂淮,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異写隶,居然都是意外死亡倔撞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門慕趴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痪蝇,“玉大人,你說我怎么就攤上這事冕房□飭” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵耙册,是天一觀的道長给僵。 經(jīng)常有香客問我,道長详拙,這世上最難降的妖魔是什么帝际? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮饶辙,結(jié)果婚禮上蹲诀,老公的妹妹穿的比我還像新娘。我一直安慰自己弃揽,他們只是感情好脯爪,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著矿微,像睡著了一般痕慢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冷冗,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天守屉,我揣著相機與錄音,去河邊找鬼蒿辙。 笑死拇泛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的思灌。 我是一名探鬼主播俺叭,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泰偿!你這毒婦竟也來了熄守?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎裕照,沒想到半個月后攒发,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡晋南,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年惠猿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片负间。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡偶妖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出政溃,到底是詐尸還是另有隱情趾访,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布董虱,位于F島的核電站扼鞋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏空扎。R本人自食惡果不足惜藏鹊,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望转锈。 院中可真熱鬧盘寡,春花似錦、人聲如沸撮慨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砌溺。三九已至影涉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間规伐,已是汗流浹背蟹倾。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留猖闪,地道東北人鲜棠。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像培慌,于是被迫代替她去往敵國和親豁陆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理吵护,服務(wù)發(fā)現(xiàn)盒音,斷路器表鳍,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • Git 命令 mkdir testcd testtouch a.md alias 設(shè)置別名 git config ...
    任教主來也閱讀 670評論 0 0
  • 一片狼藉的大地上,地面層層崩塌祥诽,一道道巨大的裂縫猶如巨蟒一般的攀爬著譬圣,將這片區(qū)域破壞得不堪入眼。 而此時原押,這片區(qū)域...
    混沌天書閱讀 229評論 0 2
  • 雨過天晴胁镐,農(nóng)人搶收熟透的麥田偎血,爸媽忙不過來诸衔,我開始一邊放牧羊群,一邊閱讀《后漢書》的假期生活颇玷,感覺很爽笨农,...
    莫道風(fēng)塵閱讀 708評論 0 0
  • 最近,一到深夜帖渠,整個思想就處于興奮狀態(tài)谒亦! 開始一段時間,我感覺是長期以來的習(xí)慣而已空郊。慢慢地份招,我才發(fā)現(xiàn),是我的負(fù)能量...
    Zoe9855閱讀 119評論 0 0