Git學習手冊1

1.Git的誕生:

Git是什麼?

Git是目前世界上最先進的分佈式版本控制系統。
工作原理

  • Workspace:工作區
  • Index / Stage:暫存區
  • Repository:倉庫區(或本地倉庫)
  • Remote:遠程倉庫

引自Git官網
Git is a free and open source distributed version control system
designed to handle everything from small to very large projects with
speed and efficiency.

Git is easy to learn and has a tiny footprint with lightning fast
performance. It outclasses SCM tools like Subversion, CVS, Perforce,
and ClearCase with features like cheap local branching, convenient
staging areas, and multiple workflows.

如果不是當年BitMover公司威脅Linux社區,可能現在我們就沒有免費而超級好用的Git了。

2.分佈式系統和集中式系統:

集中式:

集中式版本控制系統,版本庫是集中存放在中央服務器的,而幹活的時候,用的都是自己的電腦,所以要先從中央服務器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給中央服務器。中央服務器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然後回到家自己改,改完了,再放回圖書館。
最大的毛病就是必須聯網才能工作,如果在局域網內還好,帶寬夠大,速度夠快,可如果在互聯網上,遇到網速慢的話,可能提交一個10M的文件就需要5分鐘,這還不得把人給憋死啊。

分佈式:

分佈式版本控制系統根本沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因爲版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
分佈式版本控制系統的安全性要高很多,因爲每個人電腦裏都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那裏複製一個就可以了。而集中式版本控制系統的中央服務器要是出了問題,所有人都沒法幹活了。

總結:

Git:最快、最簡單也最流行(目前來說)。

3.Git安裝:

官網:https://git-scm.com/downloads。
安裝完成後,在開始菜單裏找到“Git”->“Git Bash”,蹦出一個類似命令行窗口的東西,就說明Git安裝成功!
在這裏插入圖片描述
安裝完成後,還需要最後一步設置,在命令行輸入:

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

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

4.創建版本庫:

版本庫又名倉庫,英文名repository,怎麼理解?即一個目錄,在這個目錄裏面的所有文件都在被Git管理,每個文件的修改、刪除,Git都能跟蹤,以便時時刻刻都可以追蹤歷史,或者隨時“還原”。

1.選擇一個合適的地方,創建一個新的空目錄:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

●pwd命令用於顯示當前目錄。在此電腦上,這個倉庫位於/Users/michael/learngit。
若爲Windows系統,爲了避免出現各種問題,請確保目錄名(包括父目錄)不包含中文。

2.通過git init命令把這個目錄變成Git可以管理的倉庫:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

Git倉庫就建好了,並且是一個空的倉庫(empty Git repository),當前目錄下便多了一個.git的目錄,這個目錄是用來跟蹤管理版本庫的,沒事不要手動修改。
如果沒有看到,可以使用ls -ah命令就可以看見。

注:本人已經事先創建好了倉庫,所以第一步不需要再重做。

5.將文件加入版本庫:

所有的版本控制系統,只能跟蹤文本文件的改動,比如TXT文件,網頁,以及所有的程序代碼等等,Git也不例外。而圖片這些二進制文件,雖然可以管理,但是無法跟蹤文件內部的變化,比如只知道圖片從100KB變到了120KB,但是具體改動了什麼,版本系統也不知道。
並且Microsoft的Word也是二進制格式,因此,也無法跟蹤。
使用Windows的同學請注意:
不要使用系統自帶的記事本編輯文本。因爲此記事本的開發團隊使用了一個非常弱智的行爲來保存UTF-8編碼的文件,他們自作聰明地在每個文件開頭添加了0xefbbbf(十六進制)的字符,你會遇到很多不可思議的問題,比如,網頁第一行可能會顯示一個“?”,明明正確的程序一編譯就報語法錯誤,等等,都是由記事本的弱智行爲帶來的。建議你下載Notepad++代替記事本,不但功能強大,而且免費!
記得把Notepad++的默認編碼設置爲UTF-8 without BOM即可。
現在我們編寫一個readme.txt文件

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

一定要放到learngit目錄下(子目錄也行),因爲這是一個Git倉庫,放到其他地方Git再厲害也找不到這個文件。編輯完成之後按Ctrl+Z退出(不建議用Ctrl+Z),專業使用爲:
如果是輸出狀態,首先Esc退出輸入狀態,然後Shift+;,再輸入q!或wq!(不保存改動,wq!是保存文件的寫入修改)退出
在這裏插入圖片描述

1.用命令git add 告訴Git,把文件添加到倉庫:
$ git add readme.txt

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

2.用命令git commit告訴Git,把文件提交到倉庫:
$ git commit -m "wrote a readme file"
[master (root-commit) c8bfb57] wrote a new readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

簡單解釋一下git commit命令, -m後面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄裏面方便的找到改動記錄。也可以不輸入 -m “XXX”,但是不建議這麼做,畢竟輸入說明是讓自己也知道,讓別人也明白。
成功之後會告訴你,1 file changed:1個文件被改動(即我們新添加的readme.txt), 2 insertions(+):插入了兩行內容(readme.txt有兩行內容)。
爲什麼Git添加文件需要兩步?
因爲commit一次可以提交很多文件,所以你可以多次add不同的文件,比如:

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

小結:
初始化一個Git倉庫,使用Git init命令。
添加文件到Git倉庫,使用Git add 以及 git commit -m 來完成。

6.文件的修改:

我們繼續修改之前寫的readme.txt文件。首先使用cd learngit進入learngit文件夾,然後,輸入vi readme.txt,改成如下內容:

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

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

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)


    modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

git status命令可以讓我們時刻掌握倉庫當前的狀態,上面的輸出告訴我們,readme.txt被修改過,但是還沒有準備提交的修改。
孫然Git告訴我們readme.txt被修改了,但如果能看看修改了什麼,自然是很好的。比如你休假兩週從國外回來,第一天上班時,已經記不清上次怎麼修改的readme.txt,所以,需要用git diff這個命令看看:

$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.

在這裏插入圖片描述
git diff顧名思義就是查看difference,顯示的格式正是Unix通用的diff格式,可以從上面的命令輸出看到,我們在第一行添加了一個distributed單詞。
知道了對readme.txt作了什麼修改後,再把它提交到倉庫就放心多了。
提交修改和提交新文件是一樣的兩步。

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