我的Git之旅以及感悟

楔子

前一段時(shí)間公司的源代碼管理從SVN過(guò)渡到了Git钻哩。其實(shí)在大三的時(shí)候,老師就叫我們學(xué)過(guò)Git,但是那個(gè)時(shí)候也只是漫無(wú)目的的在網(wǎng)上找一些關(guān)于Git的教程來(lái)看惊窖,不過(guò)大都沒(méi)看出個(gè)所以然來(lái)。
自從實(shí)習(xí)這五個(gè)月以來(lái)厘贼,我真正體會(huì)到了一個(gè)道理:學(xué)習(xí)東西最快的方式就是實(shí)踐它界酒。以前我學(xué)習(xí)一個(gè)東西總是從基本概念起,要完完全全搞懂它的每一個(gè)知識(shí)點(diǎn)嘴秸。那樣我才認(rèn)為是自己學(xué)會(huì)了盾计。但現(xiàn)在回過(guò)頭想一想,其實(shí)這樣是最慢的方式赁遗。身邊那一些學(xué)習(xí)比較快的同事和同學(xué)們署辉,他們都是立即去實(shí)踐,然后就懂了岩四。
其實(shí)我也是在公司必須用Git的時(shí)候才感覺(jué)一下子明白了好多以前看的概念哭尝。所以,如果正在看這篇文章的你也還不太懂什么是Git的話剖煌,別再一遍又一遍的看概念了材鹦,Just do it!

SVN之旅

6月份到公司的時(shí)候逝淹,公司項(xiàng)目還是在用SVN進(jìn)行源代碼管理。我們iOS項(xiàng)目使用的是MAC下一個(gè)比較好用的SVN客戶端:Cornerstone

界面美觀又好用桶唐,現(xiàn)在不用了還真有點(diǎn)懷念呢栅葡。不過(guò)是收費(fèi)軟件,網(wǎng)上可以找到破解的尤泽。

Git之旅

Git我使用的是SourceTree客戶端欣簇。

這個(gè)軟件有中文版,也非常好用坯约,支持Windows和Mac雙平臺(tái)熊咽。而且是免費(fèi)的,不要猶豫闹丐,馬上下載下來(lái)使用吧横殴。
代碼托管平臺(tái)除了最強(qiáng)大的GitHub外,我們國(guó)內(nèi)也還有一些第三方Git平臺(tái)卿拴,比如Coding衫仑,碼云等等,結(jié)合這些網(wǎng)站配上SourceTree創(chuàng)建你的第一個(gè)Git項(xiàng)目吧堕花,然后慢慢練習(xí)惑畴。
基礎(chǔ)教程我就不寫了,這篇文章只記錄我在使用Git過(guò)程中遇到的問(wèn)題以及解決辦法航徙。但是可以給大家推薦一些我看過(guò)的比較好的教程如贷。(但千萬(wàn)不要奢求你能全部看懂,最好是看個(gè)大概到踏,用一段時(shí)間后再回過(guò)頭來(lái)看)

Git之旅杠袱,現(xiàn)在開(kāi)始:

可以忽略的文件:

  • xcuserdata文件夾下的所有文件,這些文件都是Xcode記錄的你的一些操作數(shù)據(jù)窝稿,無(wú)需上傳到git分享給同事
  • 不可以忽略的文件:
  • project.pbxproj這個(gè)文件是記錄的項(xiàng)目的目錄結(jié)構(gòu)赴捞,當(dāng)你新增土陪,刪除了文件甚至是拖動(dòng)了某一文件的順序這個(gè)文件都會(huì)改變
  • 當(dāng)有一些文件無(wú)法忽略的時(shí)候:
    使用SourceTree的時(shí)候會(huì)出現(xiàn)有的文件無(wú)法點(diǎn)擊忽略(忽略二字是灰色的,不可點(diǎn)擊)這是因?yàn)镚it服務(wù)器上已經(jīng)有這個(gè)文件了,你不能忽略它珊蟀。如果你還是想忽略它辙纬,可以在項(xiàng)目中找到這個(gè)文件批什,把它刪除掉卧斟,再重新commit一次,commit后這個(gè)文件就可以點(diǎn)擊忽略了援奢。
    如果你曾經(jīng)上傳過(guò).DS_Store文件到Git上兼犯,現(xiàn)在想要忽略它,你就必須先刪除.DS_Store文件。(.DS_Store是隱藏文件切黔,它主要存儲(chǔ)一些文件屬性砸脊。不需要上傳到Git)
    刪除.DS_Store文件方法:
    執(zhí)行命令:
sudo find / -name “.DS_Store” -depth -exec rm {} \;

Git使用原則:

一般的小項(xiàng)目的原則是至少要有兩個(gè)分支

  • dev分支:平時(shí)開(kāi)發(fā)的修改都提交到這個(gè)分支
  • master分支:始終保持一個(gè)可以運(yùn)行的穩(wěn)定正式版,當(dāng)發(fā)布新版本時(shí)才把dev分支合并到master分支

dev分支如何合并到master分支:

先檢出(checkout)到master分支纬霞,再點(diǎn)擊合并(merge)凌埂,選擇分支為dev分支
(檢出到某分支其實(shí)就是選中某分支進(jìn)行操作的意思)

git checkout master
git merge dev

Git中如何實(shí)現(xiàn)遠(yuǎn)程倉(cāng)庫(kù)回滾:

  • 先checkout到本地的對(duì)應(yīng)分支
  • git reset --hard HEAD^本地分支reset到上一個(gè)版本(HEAD^可以換為commit ID)
  • git push origin dev -f將本地分支push到遠(yuǎn)程分支(因?yàn)楸镜匕姹镜陀谶h(yuǎn)程版本,所以必須加上-f強(qiáng)制push)
    注意:必須擁有管理員權(quán)限才能強(qiáng)制推送受保護(hù)的分支(如master分支)

解決Push時(shí)的代碼沖突

當(dāng)甲乙都修改了同一份文件诗芜,甲push了瞳抓,乙pull的時(shí)候就會(huì)報(bào)錯(cuò):

error: Your local changes to the following files would be overwritten by merge: xxx/xxx/xxx.m 
Please, commit your changes or stash them before you can merge.Aborting

解決辦法:

  • 笨辦法:檢查報(bào)錯(cuò)的那個(gè)具體文件,將自己修改的部分記下來(lái)備份到一邊绢陌,再reset該文件挨下,重新pull熔恢,再將自己的修改添加到該文件上脐湾,重新push,搞定P鹛省(倘若你想放棄你的修改秤掌,可以直接reset該文件,然后pull)
  • 正確辦法:命令行執(zhí)行
git stash  //暫存自己的修改在Git棧
git pull  //拉取遠(yuǎn)端
git stash pop  //從Git棧中恢復(fù)自己的修改

到此鹰霍,解決沖突闻鉴。如果仍未解決,可能是你們修改了同一個(gè)文件的同一個(gè)地方茂洒,這就必須手動(dòng)解決這部分沖突了孟岛。
附送:

git stash list 查看所有暫存
git stash clear 清楚所有暫存

持續(xù)更新

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市督勺,隨后出現(xiàn)的幾起案子渠羞,更是在濱河造成了極大的恐慌,老刑警劉巖智哀,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件次询,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瓷叫,警方通過(guò)查閱死者的電腦和手機(jī)屯吊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)摹菠,“玉大人盒卸,你說(shuō)我怎么就攤上這事〈伟保” “怎么了世落?”我有些...
    開(kāi)封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我屉佳,道長(zhǎng)谷朝,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任武花,我火速辦了婚禮圆凰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘体箕。我一直安慰自己专钉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布累铅。 她就那樣靜靜地躺著跃须,像睡著了一般。 火紅的嫁衣襯著肌膚如雪娃兽。 梳的紋絲不亂的頭發(fā)上菇民,一...
    開(kāi)封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音投储,去河邊找鬼第练。 笑死,一個(gè)胖子當(dāng)著我的面吹牛玛荞,可吹牛的內(nèi)容都是我干的娇掏。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼勋眯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼婴梧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起客蹋,我...
    開(kāi)封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤塞蹭,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后嚼酝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體浮还,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年闽巩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钧舌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涎跨,死狀恐怖洼冻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情隅很,我是刑警寧澤撞牢,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響屋彪,放射性物質(zhì)發(fā)生泄漏所宰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一畜挥、第九天 我趴在偏房一處隱蔽的房頂上張望仔粥。 院中可真熱鬧,春花似錦蟹但、人聲如沸躯泰。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)麦向。三九已至,卻和暖如春客叉,著一層夾襖步出監(jiān)牢的瞬間诵竭,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工十办, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秀撇,地道東北人超棺。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓向族,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親棠绘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子件相,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

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

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,632評(píng)論 9 163
  • 今天和Q微信視頻夜矗,跟我哭訴著說(shuō)她跟男朋友吵架了。她跟她男友一天到晚就喜歡兩天吵架三天恩愛(ài)让虐,簡(jiǎn)直把吵架當(dāng)情趣紊撕。調(diào)侃了...
    HelenLau閱讀 206評(píng)論 0 0
  • ??小編認(rèn)識(shí)一位阿姨,她曾經(jīng)患上過(guò)非常嚴(yán)重的失眠赡突,幾乎每晚都徹夜難眠对扶,輾轉(zhuǎn)反側(cè)。大家都問(wèn)她為什么這么心事重重惭缰,她只...
    海月中天閱讀 331評(píng)論 1 0
  • 昨天下午我很榮幸的做了一次守護(hù)上學(xué)路的志愿者浪南。 在兒子上小學(xué)之前,我每天是沒(méi)有注意到學(xué)校路口的那些家長(zhǎng)志愿者的漱受。學(xué)...
    不猛不瘋閱讀 373評(píng)論 0 1