代碼管理工具 Git


之前一直使用微軟的代碼管理工具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依然是代碼托管的首選。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM