【Git】簡介

集中式和分佈式版本控制區別

CVS及SVN都是集中式的版本控制系統,而Git是分佈式版本控制系統,集中式和分佈式版本控制系統有什麼區別呢?

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

集中式版本控制系統最大的毛病就是必須聯網才能工作,如果在局域網內還好,帶寬夠大,速度夠快,可如果在互聯網上,遇到網速慢的話,可能提交一個10M的文件就需要5分鐘,這還不得把人給憋死啊。

那分佈式版本控制系統與集中式版本控制系統有何不同呢?首先,分佈式版本控制系統根本沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因爲版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

和集中式版本控制系統相比,分佈式版本控制系統的安全性要高很多,因爲每個人電腦裏都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那裏複製一個就可以了。而集中式版本控制系統的中央服務器要是出了問題,所有人都沒法幹活了。

在實際使用分佈式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因爲可能你們倆不在一個局域網內,兩臺電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分佈式版本控制系統通常也有一臺充當“中央服務器”的電腦,但這個服務器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣幹活,只是交換修改不方便而已。

Windows中安裝Git

在Windows上使用Git,可以從Git官網直接下載安裝程序,(網速慢的同學請移步國內鏡像),然後按默認選項安裝即可。

安裝完成後,在開始菜單裏找到“Git”->“Git Bash”,蹦出一個類似命令行窗口的東西,就說明Git安裝成功

安裝完成後,還需要最後一步設置,在命令行輸入:

設置用戶名和郵箱

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

因爲Git是分佈式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址

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

查看用戶名和有像

$ git config user.name
$ git config user.email

創建版本庫

什麼是版本庫呢?版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄裏面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。

首先學習幾個命令

查看當前目錄

$ pwd

返回上一級目錄

$ cd ..

進入D盤

$ cd d:

查看當前目錄

$ ls

創建一個版本庫非常簡單,首先,選擇一個合適的地方,創建一個空目錄

$ mkdir learngit
$ cd learngit
$ pwd
/d/learngit

所以這個倉庫位於/d/learngit

第二步,通過git init命令把這個目錄變成Git可以管理的倉庫:

$ git init
Initialized empty Git repository in D:/learngit/.git/

瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),細心的讀者可以發現當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裏面的文件,不然改亂了,就把Git倉庫給破壞了。

創建版本庫
閱讀: 1859210
什麼是版本庫呢?版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄裏面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。

所以,創建一個版本庫非常簡單,首先,選擇一個合適的地方,創建一個空目錄:

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
pwd命令用於顯示當前目錄。在我的Mac上,這個倉庫位於/Users/michael/learngit。

如果你使用Windows系統,爲了避免遇到各種莫名其妙的問題,請確保目錄名(包括父目錄)不包含中文。

第二步,通過git init命令把這個目錄變成Git可以管理的倉庫:

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),細心的讀者可以發現當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裏面的文件,不然改亂了,就把Git倉庫給破壞了。

如果你沒有看到.git目錄,那是因爲這個目錄默認是隱藏的,用ls -ah命令就可以看見。

$ ls -ah
./  ../  .git/

也不一定必須在空目錄下創建Git倉庫,選擇一個已經有東西的目錄也是可以的。不過,不建議你使用自己正在開發的公司項目來學習Git,否則造成的一切後果概不負責。

把文件添加到版本庫

首先這裏再明確一下,所有的版本控制系統,其實只能跟蹤文本文件的改動,比如TXT文件,網頁,所有的程序代碼等等,Git也不例外。版本控制系統可以告訴你每次的改動,比如在第5行加了一個單詞“Linux”,在第8行刪了一個單詞“Windows”。而圖片、視頻這些二進制文件,雖然也能由版本控制系統管理,但沒法跟蹤文件的變化,只能把二進制文件每次改動串起來,也就是隻知道圖片從100KB改成了120KB,但到底改了啥,版本控制系統不知道,也沒法知道。

不幸的是,Microsoft的Word格式是二進制格式,因此,版本控制系統是沒法跟蹤Word文件的改動的,前面我們舉的例子只是爲了演示,如果要真正使用版本控制系統,就要以純文本方式編寫文件。

因爲文本是有編碼的,比如中文有常用的GBK編碼,日文有Shift_JIS編碼,如果沒有歷史遺留問題,強烈建議使用標準的UTF-8編碼,所有語言使用同一種編碼,既沒有衝突,又被所有平臺所支持。

使用Windows的童鞋要特別注意:
千萬不要使用Windows自帶的記事本編輯任何文本文件。原因是Microsoft開發記事本的團隊使用了一個非常弱智的行爲來保存UTF-8編碼的文件,他們自作聰明地在每個文件開頭添加了0xefbbbf(十六進制)的字符,你會遇到很多不可思議的問題,比如,網頁第一行可能會顯示一個“?”,明明正確的程序一編譯就報語法錯誤,等等,都是由記事本的弱智行爲帶來的。建議你下載Editplus代替記事本,不但功能強大,而且免費!記得把EditPlus的默認編碼設置爲UTF-8 without BOM即可

言歸正傳,現在我們編寫一個readme.txt文件,內容如下:

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

一定要放到learngit目錄下(子目錄也行),因爲這是一個Git倉庫,放到其他地方Git再厲害也找不到這個文件。

把一個文件放到Git倉庫只需要兩步。

第一步,用命令git add告訴Git,把文件添加到倉庫:

$ git add readme.txt

執行上面的命令,沒有任何顯示,這就對了,Unix的哲學是“沒有消息就是好消息”,說明添加成功。

第二步,用命令git commit告訴Git,把文件提交到倉庫:

$ git commit -m "wrote a readme file"
[master (root-commit) dfae22c] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

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

git commit命令執行成功後會告訴你,1 file changed:1個文件被改動(我們新添加的readme.txt文件);2 insertions:插入了兩行內容(readme.txt有兩行內容)。

爲什麼Git添加文件需要addcommit一共兩步呢?因爲commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

更多詳細內容請戳
廖雪峯老師的Git教程
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章