以前一直使用微軟的代碼管理工具TFS(Team Foundation Server)。.NET CORE 2.0的發佈後,考慮到.NET CORE項目能夠跨平臺,準備把項目遷移到.NET CORE 環境下重構。代碼管理工具也準備使用git。下面主要學習代碼管理工具,不涉及.NET CORE。html
本文目錄:git
1、爲何使用代碼管理工具?程序員
2、常見的源代碼管理工具備哪些? github
3、Git命令行管理代碼、安裝及使用web
4、Git的可視化工具SourceTree管理代碼 SourceTree的使用安全
5、git、github、gitlab之間的關係服務器
1、爲何使用代碼管理工具? 網絡
一、能記錄一個項目從開始到結束的整個過程。編輯器
二、追蹤項目中全部內容的變化狀況,如增長了什麼內容,刪除了什麼內容,修改了什麼內容等等。分佈式
三、版本控制,能夠清楚的知道每一個版本之間的異同點,如版本2.0相比較版本1.0多了什麼內容,功能等。
四、 權限控制,防止代碼混亂,提升安全性,防止一些沒必要要的損失和麻煩,簡單的理解就是爲何職位作什麼事情,不能越界。如控制程序員A對正在開發的項目具備開發的權限,其餘項目不具備開發的權限,若是不進行控制的話,那麼對其餘項目的開發權限也對程序員A開放,若是程序員A對其餘項目不當心進行了錯誤的操做 如刪除,就會形成一些損失。
五、責任追究,防止互相推卸責任,能夠清楚的知道誰對哪一個文件進行了什麼修改,致使了項目沒法正常運行。
六、回退處理,執行了錯誤的操做以後還能夠有補救的機會,如從版本1.0升級到版本2.0,後來發現版本2.0有一個錯誤,這時候能夠進行回退處理,比較方便。
七、衝突解決,在團隊的多人協同開發中,衝突是常常有的事情,好比存在着相同的文件名稱,同一個文件中有着相同功能的函數等等,這時候使用源代碼管理工具能夠比較方便的解決衝突。衝突的解決通常按照「複製-修改-合併」原則進行。
2、常見的源代碼管理工具備哪些?
一、常見的源代碼管理工具備哪些
(1)CVS
- 開啓版本控制之門
- 1990年誕生,「遠古時代」的主流源代碼管理工具
(2)SVN
- 全稱是Subversion,集中式版本控制之王者
- 是CVS的接班人,速度比CVS快,功能比CVS多且強大
- 在國內軟件企業中使用最爲廣泛(70%-90%)
(3)Git
-是目前世界上最早進的分佈式版本控制系統(沒有之一)
(4)ClearCase
- 收費的集中式版本控制工具,安裝比Windows還大,運行比蝸牛還慢
- 能用ClearCase的通常是世界500強,他們有個共同的特色是財大氣粗
(5)VSS
- 微軟的集中式版本控制工具,集成在Visual Studio中
二、SVN或者Git進行源代碼的管理基本區別
(1)GIT是分佈式的而SVN是集中式。
1.1集中式:一臺服務器控制着全部的代碼,這臺服務器的代碼是最新的,其餘電腦的代碼操做(以下載、提交)都須要經過這臺服務器才能夠執行。 1.2分佈式:每臺電腦都至關於一個服務器,代碼是最新的,比較靈活。 對比:Git的速度比SVN快;Git比SVN靈活;SVN一旦沒有網絡或者服務器掛了的話,其餘電腦都沒法執行操做,可是Git能夠先提交到本地版本庫,等待聯網的時候再提交到遠程代碼倉庫。
(2)GIT把內容按元數據方式存儲,而SVN是按文件
全部的資源控制系統都是把文件的元信息隱藏在一個相似.svn,.cvs等的文件夾裏。若是你把.git目錄的體積大小跟.svn比較,你會發現它們差距很大。由於.git目錄是處於你的機器上的一個克隆版的版本庫,
它擁有中心版本庫上全部的東西,例如標籤,分支,版本記錄等。
(3)GIT分支和SVN的分支不一樣
分支在SVN中一點不特別,就是版本庫中的另外的一個目錄。若是你想知道是否合併了一個分支,你須要手工運行像這樣的命令svn propget svn:mergeinfo,來確認代碼是否被合併。
然而,處理GIT的分支倒是至關的簡單和有趣。你能夠從同一個工做目錄下快速的在幾個分支間切換。你很容易發現未被合併的分支,你能簡單而快捷的合併這些文件。
三、常見的Git管理工具
(1)Git Base
Git Base採用命令行的方式進行版本管理,功能操做最爲靈活強大,下載地址http://git-scm.com/download/win
(2)EGit
EGit是Eclipse的Git插件,在Eclipse中開發時直接操做EGit很方便,尤爲對於有SVN開發情節的開發人員來講更加熱衷於使用,可是EGit存在不少bug和不人性化的東西,需謹慎使用!
(3)TortoiseGit
在Windows上面,圖像化軟件TortoiseGit相比GitHub客戶端使用較爲方便,下載地址:http://git-scm.com/download/win
(4)SourceTree
在Mac Ios系統上,圖形化軟件SourceTree較爲便捷(SourceTree當前不支持「開源中國--代碼託管」,支持GitHub等),堪比EGit和Git Base的合體,機油圖形化界面,又有命令行工具,下載地址:http://www.unlimax.com/sourcetree.html SourceTree官網地址須要「FQ」才能訪問,現提供SourceTree最新版本CSDN下載連接地址:http://download.csdn.net/detail/wenbitianxiafeng/8475481
四、SVN的管理工具
(1)TortoiseSvn
3、Git命令行管理代碼、安裝及使用
一、下載安裝Git
(1)下載Git 官方地址爲:https://git-scm.com/download/win
(2)下載完以後,雙擊安裝
(3)選擇安裝目錄
(4)選擇組件
(5)開始菜單目錄名設置
(6)選擇使用命令行環境
(7)如下三步默認,直接點擊下一步
(8)安裝完成
(9)檢驗是否安裝成功
回到電腦桌面,鼠標右擊若是看到有兩個git單詞則安裝成功
二、Git基本工做流程
(1)Git工做區域
(2)向倉庫中添加文件流程
三、Git初始化及倉庫建立和操做
Git安裝以後須要進行一些基本信息設置
a、設置用戶名:git config -- global user.name '你再github上註冊的用戶名';
b、設置用戶郵箱:git config -- global user.email '註冊時候的郵箱'; 注意:該配置會在github主頁上顯示誰提交了該文件
c、配置ok以後,咱們用以下命令來看看是否配置成功 git config --list
注意:git config --global 參數,有了這個參數表示你這臺機器上全部的git倉庫都會使用這個配置,固然你也能夠對某個倉庫指定不一樣的用戶名和郵箱
(1)初始化一個新的git倉庫
a、建立文件夾
方法一:能夠鼠標右擊-》點擊新建文件夾test1
方法二:使用git新建:$ mkdir test1
b、在文件內初始化git(建立git倉庫)
方法一:直接輸入 $ cd test1
方法一:點擊test1文件下進去以後-》鼠標右擊選擇Git Bash Here->輸入$ git int
(2)向倉庫中添加文件
方法一:用打開編輯器新建index.html文件
方法二:使用git命令。$ touch '文件名',而後把文件經過$ git add '文件名'添加到暫存區,最後提交操做
(3)修改倉庫文件
方法一:用編輯器打開index.html進行修改
方法二:使用git命令。$ vi '文件名',而後在中間寫內容,最後提交操做
(4)刪除倉庫文件
方法一:在編輯器中直接把要刪除的文件刪除掉
方法二:使用git刪除:$ git rm '文件名',而後提交操做
四、Git管理遠程倉庫
使用遠程倉庫的目的:備份、實現代碼共享集中化管理,Git遠程倉庫實際上就是保持在服務器上的git倉庫文件
五、Git克隆操做,目的:將遠程倉庫(github上對應的項目)複製到本地
(1)代碼:git clone 倉庫地址倉庫地址由來以下:
(2)克隆項目
(4)期間出現錯誤的狀況有:
a、出現提交錯誤
解決:這是經過Git GUI進行提交時發生的錯誤,由 .git 文件夾中的文件被設爲「只讀」所致,將 .git 文件夾下的全部文件、文件夾及其子文件的只讀屬性去掉便可。
b、若是出現沒法同步或沒有權限,解決方法以下: 用戶名和密碼必定要和github上的一致。
出現錯誤的主要緣由:github中的README.md文件不在本地代碼目錄中
解決辦法:首先使用git pull拉取github上的內容、而後再使用git push便可
4、Git的可視化工具SourceTree管理代碼 SourceTree的使用
上邊咱們說了使用git命令建立、管理代碼的方式,不過挺麻煩的,這裏介紹SourceTree代碼管理工具,具體怎麼使用SourceTree,這裏就不介紹了,網上有不少教程,請參閱http://www.javashuo.com/article/p-hmqrknfg-km.html
5、git、github、gitlab之間的關係
GIt-版本控制工具;GitHub-一個網站平臺,提供給用戶空間存儲git倉儲,保存用戶的一些數據文檔或者代碼等;GitLab - 基於Git的項目管理軟件。
(1)Git是一款自由和開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目,是版本控制工具
(2)Github 是 一個網站,提供給用戶空間建立git倉儲,保存用戶的一些數據文檔或者代碼等。GitHub能夠託管各類git庫,並提供一個web界面,但與其它像 SourceForge或Google Code這樣的服務不一樣,GitHub的獨特賣點在於從另一個項目進行分支的簡易性。爲一個項目貢獻代碼很是簡單:首先點擊項目站點的「fork」的按鈕,而後將代碼檢出並將修改加入到剛纔分出的代碼庫中,最後經過內建的「pull request」機制向項目負責人申請代碼合併。已經有人將GitHub稱爲代碼玩家的MySpace。
(3)GitLab - 基於Git的項目管理軟件,GitLab 是一個用於倉庫管理系統的開源項目。使用Git做爲代碼管理工具,並在此基礎上搭建起來的web服務。
三者都是基於git的,能夠說是git的衍生品。
二、Github和GitLab的異同點
(1)相同點:兩者都是基於web的Git倉庫,在很大程度上GitLab是仿照GitHub來作的,它們都提供了分享開源項目的平臺,爲開發團隊提供了存儲、分享、發佈和合做開發項目的中心化雲存儲的場所。
(2) 不一樣點:GitHub做爲開源代碼庫及版本控制系統,擁有超過900萬的開發者用戶,目前仍然是最火的開源項目託管系統。GitHub同時提供公共倉庫和私有倉庫,但若是要使用私有倉庫,是須要付費的。
而GitLab解決了這個問題,你能夠在上面建立私人的免費倉庫。GitLab讓開發團隊對他們的代碼倉庫擁有更多的控制,相比於GitHub,它有很多的特點:容許免費設置倉庫權限;容許用戶選擇分享一個project的部分代碼;容許用戶設置project的獲取權限,進一步的提高安全性;能夠設置獲取到團隊總體的改進進度;經過innersourcing讓不在權限範圍內的人訪問不到該資源。從代碼私有性方面來看,有時公司並不但願員工獲取到所有的代碼,這個時候GitLab無疑是更好的選擇。但對於開源項目而言,GitHub依然是代碼託管的首選。