之前一直使用微軟的代碼管理工具TFS(Team Foundation Server)。.NET CORE 2.0的發布后,考慮到.NET CORE項目可以跨平台,准備把項目遷移到.NET CORE 環境下重構。代碼管理工具也准備使用git。下面主要學習代碼管理工具,不涉及.NET CORE。
本文目錄:
一、為什么使用代碼管理工具?
二、常見的源代碼管理工具有哪些?
三、Git命令行管理代碼、安裝及使用
四、Git的可視化工具SourceTree管理代碼 SourceTree的使用
五、git、github、gitlab之間的關系
一、為什么使用代碼管理工具?
1、能記錄一個項目從開始到結束的整個過程。
2、追蹤項目中所有內容的變化情況,如增加了什么內容,刪除了什么內容,修改了什么內容等等。
3、版本控制,可以清楚的知道每個版本之間的異同點,如版本2.0相比較版本1.0多了什么內容,功能等。
4、 權限控制,防止代碼混亂,提高安全性,防止一些不必要的損失和麻煩,簡單的理解就是為什么職位做什么事情,不能越界。如控制程序員A對正在開發的項目具有開發的權限,其他項目不具有開發的權限,如果不進行控制的話,那么對其他項目的開發權限也對程序員A開放,如果程序員A對其他項目不小心進行了錯誤的操作 如刪除,就會造成一些損失。
5、責任追究,防止互相推卸責任,可以清楚的知道誰對哪個文件進行了什么修改,導致了項目無法正常運行。
6、回退處理,執行了錯誤的操作之后還可以有補救的機會,如從版本1.0升級到版本2.0,后來發現版本2.0有一個錯誤,這時候可以進行回退處理,比較方便。
7、沖突解決,在團隊的多人協同開發中,沖突是經常有的事情,比如存在着相同的文件名稱,同一個文件中有着相同功能的函數等等,這時候使用源代碼管理工具可以比較方便的解決沖突。沖突的解決一般按照“復制-修改-合並”原則進行。
二、常見的源代碼管理工具有哪些?
1、常見的源代碼管理工具有哪些
(1)CVS
- 開啟版本控制之門
- 1990年誕生,“遠古時代”的主流源代碼管理工具
(2)SVN
- 全稱是Subversion,集中式版本控制之王者
- 是CVS的接班人,速度比CVS快,功能比CVS多且強大
- 在國內軟件企業中使用最為普遍(70%-90%)
(3)Git
-是目前世界上最先進的分布式版本控制系統(沒有之一)
(4)ClearCase
- 收費的集中式版本控制工具,安裝比Windows還大,運行比蝸牛還慢
- 能用ClearCase的一般是世界500強,他們有個共同的特點是財大氣粗
(5)VSS
- 微軟的集中式版本控制工具,集成在Visual Studio中
2、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的分支卻是相當的簡單和有趣。你可以從同一個工作目錄下快速的在幾個分支間切換。你很容易發現未被合並的分支,你能簡單而快捷的合並這些文件。
3、常見的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
4、SVN的管理工具
(1)TortoiseSvn
三、Git命令行管理代碼、安裝及使用
1、下載安裝Git
(1)下載Git 官方地址為:https://git-scm.com/download/win
(2)下載完之后,雙擊安裝
(3)選擇安裝目錄
(4)選擇組件
(5)開始菜單目錄名設置
(6)選擇使用命令行環境
(7)以下三步默認,直接點擊下一步
(8)安裝完成
(9)檢驗是否安裝成功
回到電腦桌面,鼠標右擊如果看到有兩個git單詞則安裝成功
2、Git基本工作流程
(1)Git工作區域
(2)向倉庫中添加文件流程
3、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 '文件名',然后提交操作
4、Git管理遠程倉庫
使用遠程倉庫的目的:備份、實現代碼共享集中化管理,Git遠程倉庫實際上就是保持在服務器上的git倉庫文件
5、Git克隆操作,目的:將遠程倉庫(github上對應的項目)復制到本地
(1)代碼:git clone 倉庫地址倉庫地址由來如下:
(2)克隆項目
(3)將本地倉庫同步到git遠程倉庫中:git push
(4)期間出現錯誤的情況有:
a、出現提交錯誤
解決:這是通過Git GUI進行提交時發生的錯誤,由 .git 文件夾中的文件被設為“只讀”所致,將 .git 文件夾下的所有文件、文件夾及其子文件的只讀屬性去掉即可。
b、如果出現無法同步或沒有權限,解決方法如下: 用戶名和密碼一定要和github上的一致。
c、如何解決failed to push some refs to git 在使用git 對源代碼進行push到gitHub時可能會出錯,信息如下
出現錯誤的主要原因:github中的README.md文件不在本地代碼目錄中
解決辦法:首先使用git pull拉取github上的內容、然后再使用git push即可
四、Git的可視化工具SourceTree管理代碼 SourceTree的使用
上邊我們說了使用git命令創建、管理代碼的方式,不過挺麻煩的,這里介紹SourceTree代碼管理工具,具體怎么使用SourceTree,這里就不介紹了,網上有很多教程,請參閱https://www.cnblogs.com/tian-xie/p/6264104.html
五、git、github、gitlab之間的關系
GIt-版本控制工具;GitHub-一個網站平台,提供給用戶空間存儲git倉儲,保存用戶的一些數據文檔或者代碼等;GitLab - 基於Git的項目管理軟件。
1、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的衍生品。
2、Github和GitLab的異同點
(1)相同點:二者都是基於web的Git倉庫,在很大程度上GitLab是仿照GitHub來做的,它們都提供了分享開源項目的平台,為開發團隊提供了存儲、分享、發布和合作開發項目的中心化雲存儲的場所。
(2) 不同點:GitHub作為開源代碼庫及版本控制系統,擁有超過900萬的開發者用戶,目前仍然是最火的開源項目托管系統。GitHub同時提供公共倉庫和私有倉庫,但如果要使用私有倉庫,是需要付費的。
而GitLab解決了這個問題,你可以在上面創建私人的免費倉庫。GitLab讓開發團隊對他們的代碼倉庫擁有更多的控制,相比於GitHub,它有不少的特色:允許免費設置倉庫權限;允許用戶選擇分享一個project的部分代碼;允許用戶設置project的獲取權限,進一步的提升安全性;可以設置獲取到團隊整體的改進進度;通過innersourcing讓不在權限范圍內的人訪問不到該資源。從代碼私有性方面來看,有時公司並不希望員工獲取到全部的代碼,這個時候GitLab無疑是更好的選擇。但對於開源項目而言,GitHub依然是代碼托管的首選。