1. 程式人生 > >EGit和SourceTree基本操作流程

EGit和SourceTree基本操作流程

最近github比較流行,git我理解為分散式的svn。
個人覺得SVN對於使用者而言比較簡單直接,操作起來也比較好理解。但是程式碼保管方面不如git。
首先說一下SVN和GIT的區別:
svn是本地和伺服器,然而git分為原生代碼,本地伺服器和遠端伺服器。因此在操作方面不如svn那麼直接。
在這裡把git基本操作整理一下,提供自己和有需要的小夥伴參考~
Git 客戶端有好幾種,這裡講解EGit和SourceTree的基本用法。(個人比較推薦後者,最近很受人追捧的git客戶端)

git基本操作參考圖

1.EGit

首先說一下EGit個人感覺是通過SVN的思想給簡單化的git客戶端,所以這樣就不能體現git的強大所在。
個人覺得egit使用git操作有點大材小用的趕腳~而且egit本身也有一些小毛病。
如果你只是做基本的程式碼更新,提交等功能可以勉強用egit,這裡還是強烈推薦使用sourcetree。

搭建eclipse git環境(宣告:博主使用的是LUNA因此eclipse自帶git外掛)

由於安裝外掛網上有很多帶圖片的步驟,在這裡就不嘮叨如何安裝外掛了~
1、複製git專案路徑

2、Eclipse > Import > Git > Projects from Git

3、選擇克隆URL。


4、下面的Directory為git本地伺服器地址。


5.其餘的無腦next就可以了。 Eclipse 基本操作
  • Add to Index: 把要更新的檔案提交到暫存區中,由git追蹤。
  • Remove from Index: 把已提交到暫存區的檔案刪除。
  • Commit: 把檔案提交到本地伺服器。
  • Commit and Push: 把檔案提交到本地伺服器和遠端伺服器。
  • Synchronize Workspace: 原生代碼庫和遠端伺服器同步程式碼。
  • Fetch from Upstream: 遠端伺服器中取到本地伺服器。
  • Pull: 從遠端伺服器中更新原生代碼庫。

2.SourceTree

已經有一段時間流行github版本控制來分散式管理程式碼庫,客戶端也比較多,這裡將最火的客戶端工具簡單介紹一下。
sourcetree通過一個簡單的使用者介面即可使用所有的Git命令,個人認為功能相對比較全,而且通過使用者介面來操作相對來講降低了很多學習成本。
1、在github中複製git專案路徑(同Egit)

2、Clone / New 克隆github服務端到本地。(Destination Path為本地git伺服器根路徑,個人比較推薦使用eclipse的workspace作為根路徑,目的是方便eclipse匯入工作空間中的專案)


3、雙擊orgin中的develop來checkout開發分支到本地。


4、在develop分支中建立feature分支


在本地的develop中建立feature開發後提交到遠端develop伺服器步驟。

1.雙擊Branches中新建的feature分支來切換分支到feature。

2.eclipse中匯入工作空間中專案來開發。

3.本地開發完後在File Status中點選最下方的File Status 來將本地開發的程式碼add到Staged files後點擊最上方的提交。

4.提交完後需要切換到develop分支先pull一下更新,之後合併feature中的程式碼到本地develop,如有衝突可以外聯Beyond Compare軟體來解決衝突,最後push到遠端develop伺服器。


Git Flow的流程圖

主分支

  • 主分支是所有開發活動的核心分支。所有的開發活動產生的輸出物最終都會反映到主分支的程式碼中。主分支分為master分支和development分支。

1. master分支

  • master分支上存放的應該是隨時可供在生產環境中部署的程式碼(Production Ready state)。這個分支只能從其他分支合併,不能在這個分支直接修改
  • 所有在Master分支上的Commit應該Tag。

2.Develop 分支

  • 這個分支是我們是我們的主開發分支,包含所有要釋出到下一個Release的程式碼,這個主要合併與其他分支,比如Feature分支。

3.Feature 分支

  • 這個分支主要是用來開發一個新的功能,一旦開發完成,我們合併回Develop分支進入下一個Release。
  • Feature分支做完後,必須合併回Develop分支, 合併完分支後一般會刪點這個Feature分支,但是我們也可以保留。

4.Release 分支

  • 當你需要一個釋出一個新Release的時候,我們基於Develop分支建立一個Release分支,完成Release後,我們合併到Master和Develop分支。
  • Release分支基於Develop分支建立,打完Release分之後,我們可以在這個Release分支上測試,修改Bug等。同時,其它開發人員可以基於開發新的Feature (記住:一旦打了Release分支之後不要從Develop分支上合併新的改動到Release分支)
  • 釋出Release分支時,合併Release到Master和Develop, 同時在Master分支上打個Tag記住Release版本號,然後可以刪除Release分支了。

5.Hotfix 分支

  • 當我們在Production發現新的Bug時候,我們需要建立一個Hotfix, 完成Hotfix後,我們合併回Master和Develop分支,所以Hotfix的改動會進入下一個Release。
  • hotfix分支基於Master分支建立,開發完後需要合併回Master和Develop分支,同時在Master上打一個tag。

3.總結

簡單整理一下基本使用git flow的流程如下:

  1. 克隆到本地伺服器後再checkout遠端develop分支。在切換到本地develop分支中建立feature分支做功能開發。
  2. 開發完成後將feature中程式碼提交併推送到遠端develop分支上。
  3. 在develop分支中建立release分支。並在該分支進行測試,測試完成後將修改的內容合併到master和develop分支上。(做完合併後可以刪除該分支,也可以保留)
  4. master上突然發現緊急bug需要建立補丁修改時候在master分支上建立hotfix分支修補bug,修補完成後需要將修補內容合併回master和develop分支中(建議使用pull request 進行master的合併)。

SourceTree&Git部分名詞解釋

  • 克隆(clone):從遠端倉庫URL載入建立一個與遠端倉庫一樣的本地倉庫
  • 提交(commit):將暫存檔案上傳到本地倉庫(我們在Finder中對本地倉庫做修改後一般都得先提交一次,再推送)
  • 檢出(checkout):切換不同分支
  • 新增(add):新增檔案到快取區
  • 移除(remove):移除檔案至快取區
  • 暫存(git stash):儲存工作現場
  • 重置(reset):回到最近新增(add)/提交(commit)狀態
  • 合併(merge):將多個同名檔案合併為一個檔案,該檔案包含多個同名檔案的所有內容,相同內容抵消
  • 抓取(fetch):從遠端倉庫獲取資訊並同步至本地倉庫
  • 拉取(pull):從遠端倉庫獲取資訊並同步至本地倉庫,並且自動執行合併(merge)操作,即 pull=fetch+merge
  • 推送(push):將本地倉庫同步至遠端倉庫,一般推送(push)前先拉取(pull)一次,確保一致
  • 分支(branch):建立/修改/刪除分枝
  • 標籤(tag):給專案增添標籤
  • 工作流(Git Flow):團隊工作時,每個人建立屬於自己的分枝(branch),確定無誤後提交到master分枝
  • 終端(terminal):可以輸入git命令列