前言:
俗話說的好工欲善其事必先利其器,Git分散式版本控制系統是我們日常開發中不可或缺的。目前市面上比較流行的Git視覺化管理工具有SourceTree、Github Desktop、TortoiseGit,綜合網上的一些文章分析和自己的日常開發實踐心得個人比較推薦開發者使用SourceTree,因為SourceTree同時支援Windows和Mac,並且介面十分的精美簡潔,大大的簡化了開發者與程式碼庫之間的Git操作方式。該篇文章主要是對日常開發中使用SourceTree視覺化管理工具的一些常用操作進行詳細講解。
SourceTree | Github Desktop | TortoiseGit 視覺化管理工具對比:
SourceTree介紹和Atlassian賬號註冊和登入教程:
連線Gitee or GitHub,獲取程式碼:
注意:這裡介紹的是使用SSH協議獲取關聯遠端倉庫的程式碼,大家也可以直接使用過HTTPS協議的方式直接輸入賬號密碼獲取關聯程式碼!
全面概述Gitee和GitHub生成/新增SSH公鑰:
在SourceTree中新增SSH金鑰:
工具=>選擇:
新增SSH金鑰位置:C:\Users\xxxxx\.ssh\id_rsa.pub:
SSH客戶端選擇OpenSSH:
Clone對應託管平臺倉庫(以Gitee為例):
開啟碼雲,找到自己需要Clone的倉庫!
SourceTree設定預設工作目錄:
由上面我們可以發現每次Clone克隆專案的時候,克隆下來的專案預設儲存位置都是在C盤,因此每次都需要我們去選擇專案存放的路徑,作為一個喜歡偷懶的人而言當然不喜歡這種方式啦,因此我們可以設定一個預設的專案儲存位置。
設定SourceTree預設專案目錄:
點選工具=>選項=>一般=>找到專案目錄設定Clone專案預設儲存的位置
SourceTree程式碼提交:
1.首先切換到需要修改功能程式碼所在的分支:
2.將修改的程式碼提交到暫存區:
3.將暫存區中的程式碼提交到原生程式碼倉庫:
注意:多人同時開發專案的時候,不推薦預設選中立即推送變更到origin/develop,避免一些不必要的麻煩!
4.程式碼拉取更新原生程式碼庫,並將程式碼推送到遠端倉庫:
勾選需要推送的分支進行推送:
程式碼成功推送到遠端程式碼庫:
5.在Gitee中檢視推送結果:
SourceTree分支切換,新建,合併:
1.分支切換:
雙擊切換:
單擊滑鼠右鍵切換:
2.新建分支:
注意:在新建分支時,我們需要在哪個主分支的基礎上新建分支必須先要切換到對應的主分支才能到該主分支上建立分支,如下我們要在master分支上建立一個feature-0613分支:
3.合併分支:
注意:在合併程式碼之前我們都需要將需要合併的分支拉取到最新狀態(**避免覆蓋別人的程式碼,或者丟失一些重要檔案)!!!!!
在master分支上點選右鍵,選擇合併feature-0613至當前分支即可進行合併:
分支合併成功:
SourceTree程式碼衝突解決:
首先我們需要製造一個提交檔案遇到衝突的情景:
在SoureceTree中在Clone一個新專案,命名為pingrixuexilianxi2,如下圖所示:
我們以專案中的【程式碼合併衝突測試.txt】檔案為例:
在pingrixuexilianxi2中新增內容,並提交到遠端程式碼庫,新增的內容如下:
在pingrixuexilianxi中新增內容,提交程式碼(不選擇立即推送變更到origin/master),拉取程式碼即會遇到衝突:
衝突檔案中的內容:
直接開啟衝突檔案手動解決衝突:
由下面的衝突檔案中的衝突內容我們瞭解到:
<<<<<<< HEAD 6月19日 pingrixuexilianxi新增了內容 ======= 6月18日 pingrixuexilianxi2修改了這個檔案哦 >>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5
<<<<<<< HEAD到 =======裡面的【6月19日 pingrixuexilianxi新增了內容】是自己剛才的Commit提交的內容
=======到 >>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5裡面的【6月18日 pingrixuexilianxi2修改了這個檔案哦】是遠端程式碼庫更新的內容(即為pingrixuexilianxi2原生程式碼庫推送修改內容)。
手動衝突解決方法:
根據專案需求刪除不需要的程式碼就行了,假如都需要的話我們只需要把 <<<<<<< HEAD======= >>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5都刪掉衝突就解決了(注意,在專案中最後這些符號都不能存在,否則可能會報異常)。
最後將衝突檔案標記為已解決,提交到遠端倉庫:
採用外部文字檔案對比工具Beyond Compare解決衝突:
SourceTree配置文字檔案對比工具Beyond Compare:
工具=>選項=>比較:
使用Beyond Compare解決衝突:
Beyond Compare使用技巧:
SourceTree開啟外部和合並工具:
注意:第一次啟動Beynod Compare軟體需要一會時間,請耐心等待:
Beynod Compare進行衝突合併:
點選儲存檔案後關閉Beynod Compare工具,SourceTree中的衝突就解決了,在SourceTree中我們會發現多了一個 .orig 的檔案。接著選中那個.orig檔案,單擊右鍵 => 移除,最後我們推送到遠端程式碼庫即可:
Sourcetree中的基本名詞說明:
克隆/新建(clone):從遠端倉庫URL載入建立一個與遠端倉庫一樣的本地倉庫。提交(commit):將暫存區檔案上傳到原生程式碼倉庫。推送(push):將本地倉庫同步至遠端倉庫,一般推送(push)前先拉取(pull)一次,確保一致(十分注意:這樣你才能達到和別人最新程式碼同步的狀態,同時也能夠規避很多不必要的問題)。拉取(pull):從遠端倉庫獲取資訊並同步至本地倉庫,並且自動執行合併(merge)操作(git pull=git fetch+git merge)。獲取(fetch):從遠端倉庫獲取資訊並同步至本地倉庫。分支(branch):建立/修改/刪除分枝。合併(merge):將多個同名檔案合併為一個檔案,該檔案包含多個同名檔案的所有內容,相同內容抵消。貯藏(git stash):儲存工作現場。丟棄(Discard):丟棄更改,恢復檔案改動/重置所有改動,即將已暫存的檔案丟回未暫存的檔案。標籤(tag):給專案增添標籤。工作流(Git Flow):團隊工作時,每個人建立屬於自己的分枝(branch),確定無誤後提交到master分支。終端(terminal):可以輸入git命令列。每次拉取和推送的時候不用每次輸入密碼的命令列:git config credential.helper osxkeychain sourcetree。檢出(checkout):切換不同分支。新增(add):新增檔案到快取區。移除(remove):移除檔案至快取區。重置(reset):回到最近新增(add)/提交(commit)狀態。
Git分散式版本控制器常用命令和使用:
當然作為一個有逼格的程式設計師, 一些常用的命令我們還是需要了解和掌握的,詳情可參考我之前寫過的文章: