Git入門與練習(一)

Git簡介

Git是什麼?

Git是目前世界上最先進的分佈式版本控制系統(沒有之一)。

Git有什麼特點?簡單來說就是:高端大氣上檔次!

集中式VS分佈式

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

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

在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地址。

創建版本庫

1、選擇一個工作目錄,右鍵Git Bash Here

2、輸入命令$ mkdir learngit,會該目錄下創建一個空的文件夾

3、切換到learngit目錄(這就是你的repository):$ cd learngit

4、將repository納入git的管理:$ git init ,此命令會在learngit目錄下創建一個.git文件夾,默認不可見,其中包含了git版本庫(對應你的learngit目錄)和一些配置信息,切記不要改動。

向版本庫中添加文件

1、在工作目錄learngit中創建文件readme.tx,並使用EditPlus或Notepad++編輯(設置字符集爲utf-8 without BOM),因爲word或記事本會影響文件的編碼,文件內容如下:

 Git is distributed version system.

 Git is a free software.

2、將文件添加到版本庫分爲兩步:先add後commit

 $ git add readme.txt ,執行後沒有反應?沒有消息就是好消息!

 $ git commit -m "create a file readme.txt"

 1 file changed, 2 insertions(+) ,一個文件成功更新到版本庫,文件的變更有兩行內容

 create mode 100644 readme.txt 

commit的參數-m是註釋本次提交的信息,便於我們以後在版本庫中找到對應的版本,作爲一個程序員,你應該養成這個好習慣。

 先add是將文件資源管理器中的文件加入到版本庫(.git)中的暫存區(stage),這是Git中很重要的一個概念,工作目錄的文件要更新到版本庫中必須都經過暫存區

你可以添加任意個文件到暫存區中,commit命令會將暫存區中的所有文件更新到版本庫。 


修改文件

當你需要把readme文件的內容修改如下:
Git is distributed version control system.

Git is a free software.

你想同步更新到版本庫中,也需要先add後commit,在此之前我們可以看一下暫存區的狀態:

命令爲:$ git status  提示消息如下:On branch masterChanges not staged for commit:(沒有文件被add到暫存區中)  (use "git add <file>..." to update what will be committed)  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   readme.txt(有文件被修改了)

 我們可以查看具體的修改細節:

$ git diffdiff --git a/readme.txt b/readme.txtindex b0e8017..5f5c4e8 100644--- a/readme.txt+++ b/readme.txt@@ -1,2 +1,2 @@-Git is distributed version system.(修改前)+Git is distributed version control system.(修改後) Git is a free software.\ No newline at end of file如我所言, 現在我們可以放心提交了

$ git add readme.txt

在修改之前我們再看一下暫存區的狀態:

$ git status
# On branch master# Changes to be committed:(已有更改的文件被add到暫存區)# (use "git reset HEAD <file>..." to unstage)## modified: readme.txt(該文件被修改過)git status告訴我們,將要被提交的修改包括readme.txt,下一步,就可以放心地提交了:$ git commit -m "insert a word control"[master 1065292] insert a word control 1 file changed, 1 insertion(+)(有一行被修改), 1 deletion(-)

版本回退

我們再將readme內容修改如下:

Git is distributed version control system.

Git is a free software distributed under GPL.

並add後commit

 $ git commit -m "append GPL"

這時對應之前的三次commit,版本庫中已經有了readme文件的三個版本,依次是:
1、create a file readme
Git is a version control system.
Git is free software.
2、insert a word control
Git is a version control system.
Git is free software.
3、append GPL
Git is a version control system.
Git is free software distributed under the GPL.

如果我們有n次提交,我們不可能將這些版本信息都記在腦子裏,這時就用到了log命令:
$ git log
commit 0c9d4ec59e2975a28d7178abf9862afa542d56d8 (HEAD -> master)
Author: zaw <[email protected]>
Date:   Wed Feb 7 23:16:37 2018 +0800

    append GPL

commit 10652926b09e0f9191db72cd5bad5cb84bf23dc3
Author: zaw <[email protected]>
Date:   Wed Feb 7 23:05:49 2018 +0800

    insert a word control

commit 78d680c4b62d2e7d190c5ea820308e7297844410
Author: zaw <[email protected]>
Date:   Wed Feb 7 22:52:38 2018 +0800

    create a file readme.txt:


log將爲我們顯示當前版本之前所有的提交信息,commit後面的一長串字母是每次提交的id(我們不一樣),方便我們找到對應版本,
(HEAD -> master),HEAD是一個指針指向master分支,master分支是默認主分支,這點在後續會詳解。關注後續練習。

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