你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> Git之rebase操作分享

Git之rebase操作分享

編輯:IOS開發基礎

進入點融之前,筆者的版本控制一直用的是SVN。在加入點融後,接觸到了GIT,也使筆者有機會學習到更為廣泛應用的GIT版本控制。

通過同事幫助和自主學習,以及在一些網絡上學習到Git相關知識的基礎之上,筆者將從大的方面來闡述一下GIT與SVN的區別。

1、控制版本

最核心的區別,GIT是分布式控制版本,而SVN不是。

GIT跟SVN一樣有自己的集中式版本庫或服務器,但是GIT更傾向於被使用於分布式模式,也就是每個開發人員從中心版本庫/服務器上checkout代碼後會在自己的機器上克隆一個自己的版本庫。舉個例子,如果你被困在一個不能連接網絡的地方時,如飛機上,地下室,電梯裡等,你仍然能夠提交文件,查看歷史版本記錄,創建項目分支等等。

2、存儲方式

GIT把內容按元數據方式存儲,而SVN是按文件。

所有的資源控制系統都是把文件的元信息隱藏在一個類似.svn,.cvs等的文件夾裡。如果你把.git目錄的體積大小跟.svn比較,你會發現它們差距很大。因為.git目錄是處於你的機器上的一個克隆版的版本庫,它擁有中心版本庫上所有的東西,例如標簽,分支,版本記錄等。

3、分支

GIT分支和SVN的分支不同。

分支在SVN中一點不特別,就是版本庫中的另外的一個目錄。然而,處理GIT的分支卻是相當的簡單和有趣。你可以從同一個工作目錄下快速的在幾個分支間切換。你很容易發現未被合並的分支,你能簡單而快捷的合並這些文件。

4、rebase命令的操作

言歸正傳,接下來,本文將主要介紹的rebase命令的操作。

在實際項目開發過程當中,開發人員都會從遠程主分支克隆代碼到本地,然後在此基礎之上,進行自己的功能開發。在本地開發的同時,遠程主分支也會不斷有其他同事開發的功能被push上去。在本地開發的代碼,可以通過fetch,然後在merge提交到本地或者直接pull到本地來做作為本地同步遠程代碼的目的,當然在此筆者主要想講述的是如何通過統一遠程和本地的代碼的log,從而神不知鬼不覺的去同步代碼。

我們來具體演示一下rebase的用法。

首先克隆遠程主分支到本地主分支(master),然後創建自己的分支(test),具體demo如下圖所示:

2231313-8ae106470648e304.png

此時test分支的版本如下:

2231313-73ed58d53246e2b4.jpeg

主分支master,在其他同事的不斷push後,現在的版本如下:

2231313-7efd46772b566347.jpeg

如上圖所示,當前主分支有新的代碼提交,本地分支開發人員每天也會有新的代碼提交。但是往往一個功能模塊的開發是需要好幾天才能完成的,故一個功能點往往會產生多個log,關於如何合並多個提交log,後面會講述(詳見步驟8)。接下來,在本地開發人員進行功能開發結束後,如下圖所示:

2231313-7ed70f58869189cf.jpeg

如上圖所示,可以看到開發人員在本地分支提交了3次代碼,完成了功能開發,接下來就要進行rebase操作,如下圖所示:

2231313-293d63c8870e2cc5.jpeg

在rebase過程當中可能需要處理一些沖突,具體操作如下圖所示:

2231313-422b668f6cb9d509.jpeg

2231313-7d83484855ed3245.jpeg

2231313-1db6a1da24459fff.jpeg

如上圖所示,rebase結束,具體結果如下所示:

2231313-6b9fd16c568e8668.jpeg

接下來主要看一下,如果合並分支多次提交log,運行命令如下:

git

rebase -i 9b67ef73b1225777153aad76de0dee444fa9d892

會跳出vim編輯模式,修改除第一個外的後面幾個pick為s或者squash,將log改為:test合並之前提交的1,2,3;

如下所示:

2231313-0ee1c9830a8fced3.jpeg

2231313-92fca3d09b12733a.jpeg

2231313-b0aea028ac8b4c6f.png

到此合並結束,具體結果如下:

2231313-93c53c2e63914c41.jpeg

至此,這個rebase基本功能用法就介紹完畢了。在操作過程當中,可能要解決一些沖突,merge一些代碼,提交之後,才可以繼續操作。一般情況下,敲入命令:git status,查看當前版本下的提示情況之後,再進行相應操作,就可以了。

希望筆者對此命令的一些心得體會可以幫助更多的開發人員理解GIT,可以更好的上手應用GIT,有更多關於GIT的心得體會,歡迎與筆者探討。




  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved