一 、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基本使用
(1)克隆
點擊克隆按鈕,克隆項目:
既可以是本地已有的git項目,也可以是遠程目錄中的項目,
本地存在的git項目,
獲取項目克隆地址,點擊克隆按鈕,如圖所示:
1、克隆項目的路徑
2、克隆項目存放的位置
3、如果要下載特定的分支,可以按分支進行下載
(2)配置忽略文件
利用.gitignore過濾文件,如編譯過程中的中間文件,等等,這些文件不需要被追蹤管理。
.gitignore文件只對還沒有加入版本管理的文件起作用,如果之前已經用git把這些文件納入了版本庫,就不起作用了
使用sourcetree添加忽略文件的方法:
正常情況下,管理員創建項目后需要直接將忽略文件創建好。創建方法如圖:
按照如上步驟操作即可編輯沖突文件。
沖突文件規則:
忽略文件夾(如:bin、obj):
obj/
bin/
某目錄下的所有.txt文件,
obj/*.txt
開發的過程中可能遇到一些忽略文件中未添加的文件,此時需要開發者自行添加忽略文件,添加方法如下:
之前已經介紹過未進行版本控制的或者受版本控制的文件,在sourcetree的“文件狀態” 標簽中查找,如圖所示:
鼠標右鍵要忽略的文件,點擊“忽略”,選擇忽略的模式,即可將文件進行忽略,如圖所示:
(3)tag使用方法
打tag的目的是在代碼的主要節點處有個標記,方便下次修改代碼時可以准確的找到想要找的代碼。而無需看着日志文件逐一回憶要找的代碼位置。
(4)分支管理與使用
使用sourcetree創建和使用分支是很方便的,不像之前使用的TortoiseGit只能在當前代碼處創建分支,使用sourcetree的方便之處:
1、可以選擇特定的某版本創建分支
2、代碼檢出時可以按照分支進行檢出
3、分支的添加很簡單
分支添加:
1、可以在當前的版本下創建分支
2、選擇指定的提交創建分支
3、點擊“創建分支”
分支提交到服務器:
在sourcetree右側內容中的分支列表中,選中創建的分支,右鍵提交,如圖所示:
分支合並:
1、分支合並功能和分支添加功能類似,這里不再詳述,需要注意的是首先要切換到被合並的分支上,再進行合並操作。
2、分支合並時,可以選擇具體的某提交進行合並,同時主分支可以合並到子分支;子分支可以合並到主分支;子分支之間也可以進行合並。
(5)GIT與SVN同步
git svn工具集在當前不得不使用 Subversion 服務器或者開發環境要求使用 Subversion 服務器的時候格外有用。不妨把它看成一個跛腳的 Git,在實際使用中不推薦這樣使用GIT。
(6)基本步驟
提交、拉取和推送
提交:
項目提交是為了維護本地版本庫,如果本地有未提交的內容,則不允許拉取和推送;如圖所示區域有內容時,則代表本地未提交的內容:
點擊Stage All,填寫提交信息既可以將本地內容(暫存區)提交到本地版本庫,如圖所示:
1、將未暫存的文件進行暫存,如果有些文件不需要暫存,則可以進行刪除,選中文件,右鍵“移除”即可。
拉取:從遠程將代碼進行更新,相當於SVN的“更新”
推送:將代碼提交到遠程。
(7)解決沖突
簡單介紹
1、沖突文件的符號為“感嘆號”
2、選中“沖突文件”,右鍵——點擊”解決沖突“——點擊”打開外部合並工具“(備注:才操作時已經安裝外部合並工具,同時在sourcetree中已經進行配置,詳見”集成文件對比插件“)
沖突界面
沖突解決界面如下:可以根據需要選擇內容顯示類型,只”顯示更改“,”顯示沖突“或者”全部“
解決沖突
方法一:在相關的版本處,選中”沖突行”,合並區默認處於合並位置,鼠標右鍵,選擇最終沖突地方留下的內容,如圖:
解決沖突之后效果圖:
1、沖突圖標由”感嘆號”——“省略號”。
2、右側顯示修改后的代碼進行查看。
3、同時修改的沖突文件有相應的備份,大家可以下載到本地,方便沖突有問題再次修改文件。
備注:該文件下載之后請將版本庫中的該文件刪除,不要上傳到版本庫中。
4、修改完沖突之后,需要再次提交,推送。大家養成提交時,提交有效的日志信息,不要將比如:123之類的信息推送到服務器中。
方法二:如果沖突非常少,可以直接在右側欄中解決沖突,如圖所示:
1、點擊未暫存區域的沖突文件。
2、右側列表中出現沖突的內容。
3、選擇沖突內容,解決沖突,如圖所示:
暫存行:表示保留該內容
丟棄行:表示刪除該內容
備注:區分於第一種方式,使用第一種方法解決時,不要點擊”未暫存文件”,否則可能無法打開沖突文件
(8)版本回退
原則上,代碼推送之前要保證本地的代碼可運行,不要將不可運行或者有問題的代碼推送到服務器上,如果由於誤操作,將代碼推送到了遠程,想重新修改上傳代碼,此時,需要將版本進行回退,回退方法如圖:
1、切換到日志/歷史標簽
2、選擇要恢復到的版本,如圖藍色位置
3、鼠標右鍵,選擇“重置當前分支到此次提交”
4、選擇”重置模式”,如圖所示
5、彈出框中選擇”Yes”
(9)相關提示信息含義
沖突信息
先更新信息
小竅門:
如果推送時,拉取右上方顯示數字,則需要先拉取再推送。
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部分名詞解釋
克隆(clone):從遠程倉庫URL加載創建一個與遠程倉庫一樣的本地倉庫
提交(commit):將暫存文件上傳到本地倉庫(我們在Finder中對本地倉庫做修改后一般都得先提交一次,再推送)
檢出(checkout):切換不同分支
添加(add):添加文件到緩存區
移除(remove):移除文件至緩存區
暫存(git stash):保存工作現場
重置(reset):回到最近添加(add)/提交(commit)狀態
合並(merge):將多個同名文件合並為一個文件,該文件包含多個同名文件的所有內容,相同內容抵消
抓取(fetch):從遠程倉庫獲取信息並同步至本地倉庫
拉取(pull):從遠程倉庫獲取信息並同步至本地倉庫,並且自動執行合並(merge)操作,即 pull=fetch+merge
推送(push):將本地倉庫同步至遠程倉庫,一般推送(push)前先拉取(pull)一次,確保一致
分支(branch):創建/修改/刪除分枝
標簽(tag):給項目增添標簽
工作流(Git Flow):團隊工作時,每個人創建屬於自己的分枝(branch),確定無誤后提交到master分枝
終端(terminal):可以輸入git命令行
【原文鏈接】:SourceTree使用方法