前言:
俗話說的好工欲善其事必先利其器,Git分佈式版本控制系統是咱們平常開發中不可或缺的。目前市面上比較流行的Git可視化管理工具備SourceTree、Github Desktop、TortoiseGit,綜合網上的一些文章分析和本身的平常開發實踐心得我的比較推薦開發者使用SourceTree,由於SourceTree同時支持Windows和Mac,而且界面十分的精美簡潔,大大的簡化了開發者與代碼庫之間的Git操做方式。該篇文章主要是對平常開發中使用SourceTree可視化管理工具的一些經常使用操做進行詳細講解。html
SourceTree | Github Desktop | TortoiseGit 可視化管理工具對比:
SourceTree介紹和Atlassian帳號註冊和登陸教程:
http://www.javashuo.com/article/p-fouljizz-br.htmlgit
鏈接Gitee or GitHub,獲取代碼:
注意:這裏介紹的是使用SSH協議獲取關聯遠程倉庫的代碼,你們也能夠直接使用過HTTPS協議的方式直接輸入帳號密碼獲取關聯代碼!程序員
全面概述Gitee和GitHub生成/添加SSH公鑰:
在SourceTree中添加SSH密鑰:
工具=>選擇:github
添加SSH密鑰位置:C:\Users\xxxxx\.ssh\id_rsa.pub:
SSH客戶端選擇OpenSSH:緩存
Clone對應託管平臺倉庫(以Gitee爲例):
打開碼雲,找到本身須要Clone的倉庫!
SourceTree設置默認工做目錄:
由上面咱們能夠發現每次Clone克隆項目的時候,克隆下來的項目默認存儲位置都是在C盤,所以每次都須要咱們去選擇項目存放的路徑,做爲一個喜歡偷懶的人而言固然不喜歡這種方式啦,所以咱們能夠設置一個默認的項目存儲位置。
設置SourceTree默認項目目錄:
點擊工具=>選項=>通常=>找到項目目錄設置Clone項目默認存儲的位置:
SourceTree代碼提交:
1.首先切換到須要修改功能代碼所在的分支:
2.將修改的代碼提交到暫存區:
3.將暫存區中的代碼提交到本地代碼倉庫:
注意:多人同時開發項目的時候,不推薦默認選中當即推送變動到origin/develop,避免一些沒必要要的麻煩!ssh
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分佈式版本控制器經常使用命令和使用:
固然做爲一個有逼格的程序員, 一些經常使用的命令咱們仍是須要了解和掌握的,詳情可參考我以前寫過的文章:
SourceTree如何提交PR(Pull Request):
Pull Request提交相關操做參考該篇文章:分佈式
https://www.jianshu.com/p/b365c743ec8d工具
一、fork 項目:
二、克隆本地
打開Git Bash輸入倉庫克隆命令:測試
git clone https://github.com/liangtongzhuo/taro-ui.git
三、根據文檔建立分支
拖進 SourceTree,基於 dev 建立分支以下圖:fetch
四、提交修改的代碼到遠程代碼庫
文章上面已經提到了使用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中的遠程代碼庫
五、提交 Pull Request
第四步提交成功後,進入原來fork的倉庫,點擊 Compare
提交你的說明,選擇合併的分支便可,剩下等待合併。