部門最近在做SCM遷移到Git的試點,在初步搞定了服務端之後,接下來我們就要着手解決客戶端使用的問題。
1. 概述
相較於命令行來說,GUI方式對於新手入門更簡單一些,這也是Windows能穩穩站在操作系統使用榜榜首多年的重要原因。因此本次我們也打算以GUI工具作爲Git客戶端使用的切入點。我們選擇的是 Atlassian公司出品的Sourcetree。
2. 基本操作
按照我們之前對於SVN的運用,本次我們將主要介紹如下在Sourcetree中如何進行以下操作:
- 拉取代碼
- 提交代碼
- 回滾代碼
- 解決衝突
2.1 拉取代碼
-
Sourcetree頂部菜單欄"文件" > “克隆/新建”。
-
在彈出的Tab頁中,選擇默認的"Clone",輸入獲取到的Git地址。
請注意筆者這裏使用的HTTP格式的地址,默認情況下使用這種格式每次操作是需要輸入用戶名和密碼的,因此我們採用下面這種格式來避免此類重複操作:# 把遠程連接例如http://xxx/yyy.git 修改爲http://username:password@xxx/yyy.git , # 若是username或者password中有@,使用%40替換。 http://username:[email protected]:790/root/firstgitlabproject.git
-
耐心等待Sourcetree拉取代碼即可。
2.2 提交代碼
在拉取完代碼,進行完BUG修復或者Feature開發之後,我們就需要將本地的修改推送到遠程Git服務器上。
這裏筆者就不對GIT的基本概念進行贅述了,只需要按照以上如圖所示,即可將本地更改推送到Git服務端。
這裏將命令行和界面操作做一個簡單的對照。
命令行 | Sourcetree |
---|---|
git add | 暫存 |
git commit | 提交 |
git push | 推送 |
2.3 回滾代碼
這裏的回滾大概分爲三種:
- 回滾本地修改。(此時還未進行本地Commit)
- 回滾本地的Commit。(此時還未推送到遠程Git服務器)
- 回滾已經推送到Server端的Commit。
2.3.1 回滾本地修改。
這個應該是三種情形種最簡單的了,只需要在未暫存區選中對應的文件,右鍵選擇"丟棄"即可。
2.3.2 回滾本地Commit。
這一類操作只涉及到研發人員本地的操作環境,相對來說簡單很多。只需要選取所要回滾Commit之前的那個Commit節點,然後選擇下圖中的選項即可。
彈出的交互框中,三個選項中推薦直接使用默認的混合合併,然後點擊確認即可。
以上操作即可將本地Commit回滾掉,接下來研發人員對文件進行再次的修改,而不需要增加額外的Commit。
這裏額外說明下上圖中三個選項的含義:
選項 | 含義 |
---|---|
軟合併 | 回退到暫存區 |
混合合併 | 回退到未暫存區(默認) |
強行合併 | 直接把提交的文件reset (最好不要用) |
2.3.3 回滾Server端Commit。
這一種要稍微複雜一些。首選我們需要選中想要進行回滾的Commit節點,進行如下操作:
彈出的交互框中,確認之後將自動生成類似下圖中的Commit。
最後點擊左上角的"推送"鈕將自動生成的Commit推送到服務端即可。
2.4 解決衝突
日常軟件開發中,偶爾也會因爲某些原因發生代碼衝突的問題,這類問題在Sourcetree中表現如下:
解決方法:
右鍵選中發生衝突的文件,最終選擇打開外部合併工具。
這裏我們使用Beyond Compare 作爲對比工具。
人工解決完衝突之後,再次提交文件即可。(注意衝突解決完畢之後本地會生成一個後綴爲 .org 的文件,切勿提交!)
重要提示:
- 養成先pull,再編碼的好習慣。
- 養成先pull,再push的好習慣。
3. 後續
Sourcetree的操作肯定還有不少,諸如作爲Git重要亮點之一的分支等,就留待之後再介紹吧/