1x.sourceTree的使用流程
12.Git管理工具對比(GitBash、EGit、SourceTree)
11.SourceTree使用SSH克隆碼雲項目
======
1x.sourceTree的使用流程1. 安裝Git
下載地址:點擊打開鏈接
安裝指南:默認選項即可
2. 安裝TortoiseGit
下載地址:點擊打開鏈接
安裝指南:點擊打開鏈接
12.Git管理工具對比(GitBash、EGit、SourceTree)?
Git管理工具對比(GitBash、EGit、SourceTree)
GitBash是采用命令行的方式對版本進行管理,功能最為靈活強大,但是由於需要手動輸入希望修改的文件名,所以相對繁瑣。
EGit是Eclipse的Git插件,最為糾結的一個軟件,因為開發時直操作很方便,尤其是有svn開發情節的人更熱衷於這樣,不過EGit中有很多bug和不人性化的東西,讓人吐血,所以
一句話EGit並不能解決所有Git問題,開發時必須部分依賴於其他Git管理工具。一會一一列舉。
SourceTree是最近應用的一個軟件,一句話概括,既有GitBash的命令行,又有EGit的圖形化管理,用戶界面很人性化,Eclipse+GitBash完全可以應付版本管理。
那么下面我結合項目中開發遇到的問題一一講解一下:
<一>EGit之我見:
EGit最大的好處是集成在eclipse里面,對於代碼修改后提交很方便,其中我最常使用的部分是:
(1)簡單的Commit,pull,push。
(2)Git repository(看資源庫視圖)(包括新建分支,切分支,合並分支)
(3)工程reset hard(強制覆蓋本地版本),一些特殊情況會有問題。
(4)工程checkout到某一個分支,可以看當時的文件。
(5)工程show in history (查看工程變更歷史),沒有時分秒,很不爽。
其他的功能我用的不多,因為EGit確實有很多bug,犯過血淋淋的錯誤。
這里解釋一下,為什么第一條我要加上”簡單的”,因為很多時候沒有pull下來,或者沒有push上去,提示的信息很粗,有時候甚至誤以為提交,發現過很多問題,所以如果確定現在沒人和你同時改同一個文件,用EGit還是很爽的。
<二>GitBash之我見:
一般我主要通過命令行進行pull push 還有 status的操作,這個詳見我前一篇文章
《Git Bash+EGit在項目中配合使用最常用方法總結》,命令行用好了很是很不錯的,除了那種需要手寫文件名的時候,比較不爽,一兩個還可以,多了就吐血了。
<三>SourceTree之我見:
這個是我最近才發現了一個很好的工具SourceTree,可以說SourceTree是EGit和GitBash的合體,既有圖形化界面又有git命令行。
(1)基本的commit、pull、push都擁有,而且一旦發生錯誤的時候提示很准確。
(2)基本的分支管理業有,最挫的Egit刪除遠程分支是假刪除,SourceTree完美解決了這個問題。
(3)擁有EGit中的reset(重置)和checkout(簽出)兩大功能,而且更加穩定。最令我懷疑的EGit的reset hard也有報錯的時候,哎。SourceTree還是很穩定的。
(4) 那么最近用SourceTree,發現了一個很強大的功能,就是“丟棄”這個功能,和checkout其實原理是一樣的。不過圖形化界面肯定比較方便了。這里具體解釋一下這個功能:
換句話說,你改了一批文件,如果想提交一部分,保留一部分,無疑命令行最麻煩。
然后你不滿足,其中有幾個文件你還想回滾,不想改了。那么SourceTree最容易。
這里需要注意一下命令行中checkout 是指未add的,那么可以回滾到最近的線上的commit狀態。如果add之后又修改,那么會回滾到add之后的狀態。
這一個原理,在Source體現的更明顯,如下:
A. 首先我先將修改后的personRiskBase.jsp拖到緩存區中(1)。
圖(1)
B. 然后再次修改,發現下面的工作區中也有這個頁面了(圖2)。
(圖2)
C. 現在就可以對此文件進行丟棄了,如果將下面文件丟棄(checkout),那么該文件將變為緩沖區中的文件,如果將緩沖區文件丟棄,實際上回到了最近的commit版本了(reset操作)。
這里注意,如果該文件commit了,那么checkout實際上回不到commit之前的版本的,需要reset。下面詳細介紹一下reset命令。
(5) 對於reset功能的應用。這里先普及一下Git理念的事:
A. 明確一點,每一次commit都是對應着一批操作而不是對應一個文件。
這點和SVN的設計理念完全不一樣。
這也造成了一個必然的結局:SVN的分支存的是一個工程,所以每簽出一個分支實際上都是簽出一個工程。
而Git的分支存的是修改的記錄,所以每簽出一個分支,實際上都是對原工程的一次覆蓋。
B.在開發過程中大家可能會遇到這樣一個問題:Pull之后,會出現很多別人提交的代碼需要你本地再重新提交一次,那么這個原因是這樣的,當然這個是我個人的理解:Git會把每一次pull結果做兩個處理:
B1.如果pull之后,本地沒有任何問題,那么不需要再次提交別人修改的東西了,只需要繼續你的修改,push就可以了(正常情況下一版都是這樣)。
B2.如果pull之后,本地有問題,大部分情況是沖突的情況,那么Git會把本次當做一次不成功的pull(那么通俗的來講,git會認為,你認為不成功,那么你把這次版本按照你的想法改一下,再提交吧),所以你做完刪減之后,需要把剛才別人的東西再提一次作為一個新的commit。
(6) 對於checkout某一次提交,SourceTree也很人性化,會給出很人性化的提示。注意checkout之后,你的工程當前不屬於任何分支,不過可以基於此重新創建一個分支,很方便。
總結一下:這里只列出了一些關鍵的問題和不同點,當然工具的選擇因人而異。大家可以在工作中慢慢體會,如果有問題歡迎大家提出,給我寶貴的意見。
11.SourceTree使用SSH克隆碼雲項目?
一、HTTPS和SSH克隆方式的區別
二、創建添加SSH-key
1、創建:ssh-keygen -t rsa -C wdehxiang@163.com
2、查看:cat ~/.ssh/id_rsa.pub

3、添加:登錄碼雲——個人中心——修改資料——SSH公鑰


6. 特別注意:使用sourceTree報錯:Git使用錯誤收集:-ssh agent失敗 錯誤代碼-1;
解決方法:sourceTree設置--git--選擇從本地加載git;
三、開始克隆SSH
1、登錄碼雲后,進入開源項目,隨意選擇自己希望導入SourceTree的一個項目。
2、進入項目后點擊克隆,會看到HTTPS和SSH兩種方式,首先我們選擇SSH方式,復制網址
3、打開sourceTree,點擊Clone

4、克隆成功,現在可以開始操作啦。