一 、SourceTree簡介
SourceTree 是 Windows 和Mac OS X 下免費的 Git 和 Hg 客戶端,擁有視覺化介面,容易上手操作。同時它也是Mercurial和Subversion版本控制系統工具。支援建立、提交、clone、push、pull 和merge等操作。
二、下載安裝SourceTree步驟
1、下載地址:https://www.sourcetreeapp.com/,該版本是中文的
下載完成後可以進行安裝。
2、安裝SourceTree
安裝首介面
點選,Next
點選“install”,安裝完成後,開啟sourcetree,點選“user an existing account”,如圖
注意:1使用谷歌帳號登入即可,前提是你必須可以上谷歌才可以。
GOOGLE帳號登入完成之後,如圖:
此處無需設定,直接點選“跳過初始設定”即可。
登入註冊成功後,彈出設定puttykey的介面,點選“取消”即可。
點選“取消”按鈕,彈出如下提示框:
此時進入到sourcetree的主介面,現在就可以使用sourcetree啦。
三、整合檔案對比外掛
安裝對比外掛
Sourcetree中整合Beyond Compare 4,當檔案衝突時可以很好的解決衝突。安裝過程很簡單,這裡不再詳述。
Sourcetree中配置Beyond Compare 4
選單欄,“工具”——“選項”,如圖所示:
選擇“比較”選項卡,然後將紅色方框處的內容修改為如圖所示:
四、SourceTree基本使用
克隆
點選克隆按鈕,克隆專案:
既可以是本地已有的git專案,也可以是遠端目錄中的專案,
本地存在的git專案,
獲取專案克隆地址,點選克隆按鈕,如圖所示:
1、克隆專案的路徑
2、克隆專案存放的位置
3、如果要下載特定的分支,可以按分支進行下載
配置忽略檔案
利用.gitignore過濾檔案,如編譯過程中的中間檔案,等等,這些檔案不需要被追蹤管理。
.gitignore檔案只對還沒有加入版本管理的檔案起作用,如果之前已經用git把這些檔案納入了版本庫,就不起作用了
使用sourcetree新增忽略檔案的方法:
正常情況下,管理員建立專案後需要直接將忽略檔案建立好。建立方法如圖:
按照如上步驟操作即可編輯衝突檔案。
衝突檔案規則:
忽略資料夾(如:bin、obj):
obj/
bin/
某目錄下的所有.txt檔案,
obj/*.txt
開發的過程中可能遇到一些忽略檔案中未新增的檔案,此時需要開發者自行新增忽略檔案,新增方法如下:
之前已經介紹過未進行版本控制的或者受版本控制的檔案,在sourcetree的“檔案狀態” 標籤中查詢,如圖所示:
滑鼠右鍵要忽略的檔案,點選“忽略”,選擇忽略的模式,即可將檔案進行忽略,如圖所示:
tag使用方法
打tag的目的是在程式碼的主要節點處有個標記,方便下次修改程式碼時可以準確的找到想要找的程式碼。而無需看著日誌檔案逐一回憶要找的程式碼位置。
分支管理與使用
使用sourcetree建立和使用分支是很方便的,不像之前使用的TortoiseGit只能在當前程式碼處建立分支,使用sourcetree的方便之處:
1、可以選擇特定的某版本建立分支
2、程式碼檢出時可以按照分支進行檢出
3、分支的新增很簡單
分支新增:
1、可以在當前的版本下建立分支
2、選擇指定的提交建立分支
3、點選“建立分支”
分支提交到伺服器:
在sourcetree右側內容中的分支列表中,選中建立的分支,右鍵提交,如圖所示:
分支合併:
1、分支合併功能和分支新增功能類似,這裡不再詳述,需要注意的是首先要切換到被合併的分支上,再進行合併操作。
2、分支合併時,可以選擇具體的某提交進行合併,同時主分支可以合併到子分支;子分支可以合併到主分支;子分支之間也可以進行合併。
GIT與SVN同步
git svn工具集在當前不得不使用 Subversion 伺服器或者開發環境要求使用 Subversion 伺服器的時候格外有用。不妨把它看成一個跛腳的 Git,在實際使用中不推薦這樣使用GIT。
基本步驟
提交、拉取和推送
提交:
專案提交是為了維護本地版本庫,如果本地有未提交的內容,則不允許拉取和推送;如圖所示區域有內容時,則代表本地未提交的內容:
點選Stage All,填寫提交資訊既可以將本地內容(暫存區)提交到本地版本庫,如圖所示:
1、將未暫存的檔案進行暫存,如果有些檔案不需要暫存,則可以進行刪除,選中檔案,右鍵“移除”即可。
拉取:從遠端將程式碼進行更新,相當於SVN的“更新”
推送:將程式碼提交到遠端。
解決衝突
簡單介紹
1、衝突檔案的符號為“感嘆號”
2、選中“衝突檔案”,右鍵——點選”解決衝突“——點選”開啟外部合併工具“(備註:才操作時已經安裝外部合併工具,同時在sourcetree中已經進行配置,詳見”整合檔案對比外掛“)
衝突介面
衝突解決介面如下:可以根據需要選擇內容顯示型別,只”顯示更改“,”顯示衝突“或者”全部“
解決衝突
方法一:在相關的版本處,選中”衝突行”,合併區預設處於合併位置,滑鼠右鍵,選擇最終衝突地方留下的內容,如圖:
解決衝突之後效果圖:
1、衝突圖示由”感嘆號”——“省略號”。
2、右側顯示修改後的程式碼進行檢視。
3、同時修改的衝突檔案有相應的備份,大家可以下載到本地,方便衝突有問題再次修改檔案。
備註:該檔案下載之後請將版本庫中的該檔案刪除,不要上傳到版本庫中。
4、修改完衝突之後,需要再次提交,推送。大家養成提交時,提交有效的日誌資訊,不要將比如:123之類的資訊推送到伺服器中。
方法二:如果衝突非常少,可以直接在右側欄中解決衝突,如圖所示:
1、點選未暫存區域的衝突檔案。
2、右側列表中出現衝突的內容。
3、選擇衝突內容,解決衝突,如圖所示:
暫存行:表示保留該內容
丟棄行:表示刪除該內容
備註:區分於第一種方式,使用第一種方法解決時,不要點選”未暫存檔案”,否則可能無法開啟衝突檔案
版本回退
原則上,程式碼推送之前要保證本地的程式碼可執行,不要將不可執行或者有問題的程式碼推送到伺服器上,如果由於誤操作,將程式碼推送到了遠端,想重新修改上傳程式碼,此時,需要將版本進行回退,回退方法如圖:
1、切換到日誌/歷史標籤
2、選擇要恢復到的版本,如圖藍色位置
3、滑鼠右鍵,選擇“重置當前分支到此次提交”
4、選擇”重置模式”,如圖所示
5、彈出框中選擇”Yes”
相關提示資訊含義
衝突資訊
先更新資訊
:
如果推送時,拉取右上方顯示數字,則需要先拉取再推送。
GIT與SVN的區別
Git與svn的區別
1.GIT是分散式的,SVN不是,這是GIT和其它非分散式的版本控制系統,例如SVN,CVS等,最核心的區別。
解釋:
a GIT跟SVN一樣有自己的集中式版本庫或伺服器。但,GIT更傾向於被使用於分散式模式,也就是每個開發人員從中心版本庫/伺服器上chect out程式碼後會在自己的機器上克隆一個自己的版本庫。可以這樣說,如果你被困在一個不能連線網路的地方時,就像在飛機上,地下室,電梯裡等,你仍然能夠提交檔案,檢視歷史版本記錄,建立專案分支,等。對一些人來說,這好像沒多大用處,但當你突然遇到沒有網路的環境時,這個將解決你的大麻煩。
b 這種分散式的操作模式對於開源軟體社群的開發來說也是個巨大的恩賜,你不必再像以前那樣做出補丁包,通過email方式傳送出去,你只需要建立一個分支,向專案團隊傳送一個推請求。這能讓你的程式碼保持最新,而且不會在傳輸過程中丟失。GitHub.com就是一個這樣的優秀案例。
2.GIT把內容按後設資料方式儲存,而SVN是按檔案
所有的資源控制系統都是把檔案的元資訊隱藏在一個類似.svn,.cvs等的資料夾裡。如果你把.git目錄的體積大小跟.svn比較,你會發現它們差距很大。因為,.git目錄是處於你的機器上的一個克隆版的版本庫,它擁有中心版本庫上所有的東西,例如標籤,分支,版本記錄等。
3.分支,該特點是GIT的有一個核心功能;這個功能對開源社群的奉獻很大;對專案實際開發意義很大;同一個工作目錄下快速的在幾個分支間切換。你很容易發現未被合併的分支,你能簡單而快捷的合併這些檔案。
在SVN,分支是一個完整的目錄。且這個目錄擁有完整的實際檔案。如果工作成員想要開啟新的分支,那將會影響“全世界”!每個人都會擁有和你一樣的分支。如果你的分支是用來進行破壞工作(安檢測試),那將會像傳染病一樣,你改一個分支,還得讓其他人重新切分支重新下載,十分狗血。而 Git,每個工作成員可以任意在自己的本地版本庫開啟無限個分支。舉例:當我想嘗試破壞自己的程式(安檢測試),並且想保留這些被修改的檔案供日後使用, 我可以開一個分支,做我喜歡的事。完全不需擔心妨礙其他工作成員。只要我不合並及提交到主要版本庫,沒有一個工作成員會被影響。等到我不需要這個分支時, 我只要把它從我的本地版本庫刪除即可。無痛無癢。
4.GIT沒有一個全域性的版本號,而SVN有:
目前為止這是跟SVN相比GIT缺少的最大的一個特徵。你也知道,SVN的版本號實際是任何一個相應時間的原始碼快照。我認為它是從CVS進化到SVN的最大的一個突破。因為GIT和SVN從概念上就不同,我不知道GIT裡是什麼特徵與之對應。如果你有任何的線索,請在評論裡奉獻出來與大家共享。
5.GIT的內容完整性要優於SVN:
GIT的內容儲存使用的是SHA-1雜湊演算法。這能確保程式碼內容的完整性,確保在遇到磁碟故障和網路問題時降低對版本庫的破壞。這裡有一個很好的關於GIT內容完整性的討論 –http://stackoverflow.com/questions/964331/git-file-integrity
- 程式碼庫佔極少的空間。易於程式碼的分支化管理。目前支援中文,已經有成熟的圖形化管理介面工具,使用難度大。
最後總結一下:
SVN的特點是簡單,只是需要一個放程式碼的地方時用是OK的。
GIT程式碼管理平臺
開源中國上的託管的程式碼管理平臺很好用,適合管理程式碼,但是對於一些程式碼保密或者不方便放到公網上的程式碼來說,還是需要在自己公司的內網搭建一個GIT程式碼管理平臺。
1、Gitolite 該程式碼平臺是基於Linux操作的,一方面搭建起來很麻煩,另一方許可權控制起來麻煩,每次新來人員需要將安裝GIT之後的pub檔案傳送給管理員,這樣會增加了管理員和git搭建人員的麻煩。
2、Gitblit 是一個純 Java 庫用來管理、檢視和處理 Git 資料庫.相當於 Git 的 Java 管理工具.git的管家.
一方面它有基於windows的安裝版本,安裝過程只需下一步即可,很方便。
另一方面他是一個git程式碼管理平臺,統一管理使用者,分配許可權,同時可以檢視版本庫的tag和分支情況
五、SourceTree&Git部分名詞解釋
作者:小脾氣ing
連結:https://www.jianshu.com/p/6d2717c2a3e1
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。