前言:
俗話說的好工欲善其事必先利其器,Git分布式版本控制系統是我們日常開發中不可或缺的。目前市面上比較流行的Git可視化管理工具有SourceTree、Github Desktop、TortoiseGit,綜合網上的一些文章分析和自己的日常開發實踐心得個人比較推薦開發者使用SourceTree,因為SourceTree同時支援Windows和Mac,并且界面十分的精美簡潔,大大的簡化了開發者與代碼庫之間的Git操作方式。該篇文章主要是對日常開發中使用SourceTree可視化管理工具的一些常用操作進行詳細講解。
SourceTree | Github Desktop | TortoiseGit 可視化管理工具對比:
https://blog.csdn.net/hmllittlekoi/article/details/104504406/
SourceTree介紹和Atlassian賬号注冊和登入教程:
https://www.cnblogs.com/Can-daydayup/p/13128511.html
連接配接Gitee or GitHub,擷取代碼:
注意:這裡介紹的是使用SSH協定擷取關聯遠端倉庫的代碼,大家也可以直接使用過HTTPS協定的方式直接輸入賬号密碼擷取關聯代碼!
全面概述Gitee和GitHub生成/添加SSH公鑰:
https://www.cnblogs.com/Can-daydayup/p/13063280.html
在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使用技巧:
官方全面教程:https://www.beyondcompare.cc/jiqiao/
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分布式版本控制器常用指令和使用:
當然作為一個有逼格的程式員, 一些常用的指令我們還是需要了解和掌握的,詳情可參考我之前寫過的文章:
https://www.cnblogs.com/Can-daydayup/p/10134733.html
SourceTree如何送出PR(Pull Request):
Pull Request送出相關操作參考該篇文章:
https://www.jianshu.com/p/b365c743ec8d
1、fork 項目:
2、克隆本地
打開Git Bash輸入倉庫克隆指令:
git clone https://github.com/liangtongzhuo/taro-ui.git
3、根據文檔建立分支
拖進 SourceTree,基于 dev 建立分支如下圖:
4、送出修改的代碼到遠端代碼庫
文章上面已經提到了使用SourceTree送出的相關操作,可參考:
https://www.cnblogs.com/Can-daydayup/p/13128633.html#_label5(或者Ctrl F:SourceTree代碼送出)
當然也可以使用git指令送出:
git add . --送出所有修改的檔案到本地暫存區
git commit -m"fix(dos):修正文字 " --送出到本地代碼庫
git push --送出到github中的遠端代碼庫
5、送出 Pull Request
第四步送出成功後,進入原來fork的倉庫,點選 Compare
送出你的說明,選擇合并的分支即可,剩下等待合并。
作者:追逐時光者
作者簡介:一個熱愛程式設計,善于分享,喜歡學習、探索、嘗試新事物,新技術的程式猿。
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如果該篇文章對您有幫助的話,可以點一下右下角的【♥推薦♥】,希望能夠持續的為大家帶來好的技術文章,文中可能存在描述不正确或錯誤的地方,歡迎指正、補充,不勝感激 !