其實說到Git和Cocoapods我相信對於大家而言都是耳熟能詳的兩個工具了,幾乎沒有人會說我其實還沒用過這類的話吧。沒錯,我們知道git add.、commit --m、git push,我們也知道pod init、pod search AFN、pod install,但是你真的知道它們的機制嗎?
好比習武一樣,我們只會武功的招式你一樣成為不了高手,因為你沒有內功心法,你依舊只是個菜鳥,我們在開發這條道路上面也一樣,你只知道怎麼用,或許你可以在開發中得心應手,但是你永遠深入不了,因為你沒有深入思考。
一. 使用Git的遠程代碼倉庫託管的兩種方式
OK,我們現在來通過一個案例來展示遠程代碼倉庫託管的兩種方式,我們需要把把本地代碼倉庫的代碼提交到我們遠程代碼倉庫。
1.直接通過clone遠程代碼倉庫生成一個本地代碼倉庫
首先來創建一個遠程代碼倉庫
在這裡我選擇的是碼市,當然我們還可以使用GitHub, OSChina等等
打開我們的終端,使用git clone將遠程代碼倉庫克隆到本地
然後我們來了解一下本地代碼倉庫的結構
緊接著我們可以在clone的代碼倉庫中給工作區添加我們的代碼,此時我們的代碼都在工作區中,如果代碼有修改的話此時使用git status可以看到修改過的文件是紅色的,當我們使用git add .,我們的修改過的代碼會被提交到暫緩區, 此時使用git status可以看到修改過的文件是綠色的,最後我們使用git commit -m '提交日誌’,此時我們的代碼就被提交到本地代碼倉庫的master分支。
然後將提交到本地代碼倉庫master分支上面的代碼使用git push提交到遠程倉庫的master分支上。
這樣我們第一種方式就已經演示完成了。
- 本地創建的代碼倉庫和遠程代碼倉庫進行鏈接
- 首先我們在本地創建一個代碼倉庫
然後我們隨意在本地代碼倉庫創建一點東西
然後我們就可以鏈接本地代碼倉庫和遠程代碼倉庫了
此時我們可以試著提交一下我們的代碼到遠程代碼倉庫我們來看看會發生什麼事情
出現這個提示很正常因為現在我們的本地代碼倉庫和遠程代碼倉庫裡地東西是沒有同步的,類似於我們在使用svn時候的代碼衝突一個道理。那麼按照正常的思路來講我們有兩種方式可以解決這個問題。
第一種,我們可以使用git pull orgin master將遠程代碼倉庫的內容獲取到本地來,然後再將本地代碼倉庫內容提交本地並且推送到遠程代碼倉庫中。
此時遠程代碼倉庫的內容已經獲取到本地代碼倉庫了,我們直接本地提交推送到遠程代碼倉庫(git push origin master)就好了
第二種,我們可以在本地提交代碼之後在獲取本地遠程代碼倉庫的內容
我們發現我們本地代碼倉庫並沒有獲取到遠程代碼倉庫的東西,而且還出了報錯提示
這是什麼原因呢,其實是因為我們在本地提交過代碼,本地代碼倉庫就已經有了一個本地版本信息,而此時遠程代碼倉庫並沒有這樣一個版本信息,這樣和我們代碼衝突是一個道理,所以版本信息也是需要同步到遠程代碼倉庫的。
此時我們使用git pull --rebase origin master將版本信息也同時獲取一下就可以了