【最全面】SourceTree使用教程詳解(連接遠程倉庫,克隆,拉取,提交,推送,新建/切換/合並分支,沖突解決,提交PR)


 

文章正文:

前言:

  俗話說的好工欲善其事必先利其器,Git分布式版本控制系統是我們日常開發中不可或缺的。目前市面上比較流行的Git可視化管理工具有SourceTree、Github Desktop、TortoiseGit,綜合網上的一些文章分析和自己的日常開發實踐心得個人比較推薦開發者使用SourceTree,因為SourceTree同時支持Windows和Mac,並且界面十分的精美簡潔,大大的簡化了開發者與代碼庫之間的Git操作方式。該篇文章主要是對日常開發中使用SourceTree可視化管理工具的一些常用操作進行詳細講解。

SourceTree | Github Desktop | TortoiseGit 可視化管理工具對比:

SourceTree介紹和Atlassian賬號注冊和登錄教程:

https://www.cnblogs.com/Can-daydayup/p/13128511.html

連接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),拉取代碼即會遇到沖突:
 

 

 

 
沖突文件中的內容:
 

直接打開沖突文件手動解決沖突:

由下面的沖突文件中的沖突內容我們了解到:
1
2
3
4
5
<<<<<<< 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分布式版本控制器常用命令和使用:

當然作為一個有逼格的程序員, 一些常用的命令我們還是需要了解和掌握的,詳情可參考我之前寫過的文章:

SourceTree如何提交PR(Pull Request):

Pull Request提交相關操作參考該篇文章:

https://www.jianshu.com/p/b365c743ec8d

1、fork 項目:

 

 

2、克隆本地

 

 

 打開Git Bash輸入倉庫克隆命令:

1
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命令提交:

1
2
3
git add .  --提交所有修改的文件到本地暫存區
git commit -m "fix(dos):修正文字 "    --提交到本地代碼庫
git push  --提交到github中的遠程代碼庫

5、提交 Pull Request

第四步提交成功后,進入原來fork的倉庫,點擊 Compare

 

 

 提交你的說明,選擇合並的分支即可,剩下等待合並。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM