Git學習筆記

來源:互聯網
上載者:User

標籤:

一、Git簡介

  1、Git是什嗎?

  Git是世界上最好用的分布式版本控制系統,它是“Linux之父” linus用C語言花了兩周時間開發的又一個偉大的開源軟體,當時主要用於Linux源碼管理。2008年,GitHub網站上線之後,它為開源項目免費提供Git儲存,無數開源項目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。Git迅速成為最流行的分布式版本控制系統。

  2、集中式vs分布式

  集中式版本控制系統,版本庫是集中存放在中央伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從中央伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給中央伺服器。中央伺服器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然後回到家自己改,改完了,再放回圖書館。

  Linus一直痛恨的CVS及SVN都是集中式的版本控制系統。

  分布式版本控制系統根本沒有“中央伺服器”,每個人的電腦上都是一個完整的版本庫,你在自己的電腦上改了檔案A,你的同事也在他的電腦上改了檔案A,這時,你倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。在實際使用分布式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個區域網路內,兩台電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分布式版本控制系統通常也有一台充當“中央伺服器”的電腦,但這個伺服器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣幹活,只是交換修改不方便而已。

  

           集中式版本控制系統                     分布式版本控制系統

  

二、安裝Git

  1、Linux系統

  Git誕生於Linux平台並率先服務於Linux核心,因此Linux系統內建Git,我們可以使用系統預設的版本,也可以使用源碼安裝最新版本。

     

       CentOS6.6  Git版本               Ubuntu16.04  Git版本

  2、Windows系統

  windows版本:https://git-scm.com/download/win   下載安裝之後貌似是圖形化介面的,由於我這裡採用Ubuntu系統練習,所以win版本就不研究了。

 

三、Git初始化

  在安裝完成之後,還需要做最後一步配置: 

git config --global user.name "Your Name"git config --global user.email "[email protected]"

  因為Git是分布式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。你也許會擔心,如果有人故意冒充別人怎麼辦?這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。

  注意git config命令的--global參數,用了這個參數,表示你這台機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的使用者名稱和Email地址。

  git init 建立版本庫 (目錄不存在會自動建立)

  

  從中初始化資訊中可以看到,git init命令在工作區中建立了隱藏目錄.git,這個隱藏目錄就是Git的版本庫(裡面的東西不能隨便亂改)。  

    把檔案添加到版本庫

  編寫一個readme.txt檔案,內容如下: 

Git is a version control system.Git is free software.

  readme.txt檔案一定要放到learngit目錄下(子目錄也可以),因為這是一個Git倉庫,放到其他地方Git就找不到了。

  1、git add   把檔案添加到倉庫

  

  2、git commit   把檔案提交到倉庫:

  

  git commit命令,-m 後面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從記錄裡方便地找到改動記錄。

  返回的輸出資訊中,master是這次提交的分支,且是該分支的第一個提交(root-commit,後面再次提交就沒有這個提示了), 提交的id為 e09b1a6 .

 

四、時光穿梭機

  1、前奏

    修改readme.txt檔案的內容:

    Git is a distributed version control system.

    Git is free software.

    現在運行 git status命令查看結果:

    

    git status命令可以讓我們時刻掌握倉庫當前的狀態,上面的命令告訴我們,readme.txt被修改過了,但還沒有準備提交的修改。

     如果想要查看修改了什麼內容,可以使用 git diff

    

    git diff顧名思義就是查看difference,顯示的格式正是Unix通用的diff格式,可以從上面的命令輸出看到,我們在第一行添加了一個“distributed”單詞。

     修改之後還要提交到倉庫:

    

 

  2、版本回退

     當檔案經過多次修改之後,我們可能記不住改了哪些內容,這時可以使用 git log命令查看:

    

    git log命令顯示從最近到最遠的提交日誌,我們可以看到4次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file

     如果嫌輸出資訊太多,看得眼花繚亂的,可以試試加上--pretty=oneline參數:

    

  把readme.txt回退到上一個版本,也就是“add distributed”的那個版本:

    git reset --hard HEAD^       回退到上一個版本

    git reset --hard c7bb35ce    回退到指定版本

  在Git中,用HEAD表示目前的版本,也就是最新的提交,上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100

 

  Git的版本回退速度非常快,因為Git在內部有個指向目前的版本的HEAD指標,當你回退版本的時候,Git僅僅是把HEAD從指向append GPL!

  Git提供了一個命令git reflog用來記錄每一次操作:

    

 

   3、工作區和暫存區

    Git和其他版本控制系統如SVN的一個不同之處就是有暫存區的概念。

Git學習筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.