天天看點

Git教程1(安裝及基本操作)

Git簡介

 Git(全局資訊追蹤器)。

 Git是一個分布式版本控制工具,Git的使用中央倉庫不是必須的,使用者本地就是一個完整的版本倉庫,代碼的前進、回退、删除等等操作都可以直接在本地進行,不需要中央倉庫。但是,在實際操作中,為了能夠和其他同僚快速溝通以及合并代碼,一般還是會搭建一個中央倉庫。Git對分支的管理非常友好,可以快速建立或者合并分支。

 Svn集中式的版本控制工具,Svn中,必須要有中央倉庫,所有的版本資訊都儲存在中央倉庫中,代碼的前進、回退、删除等等操作都需要在中央倉庫中進行,使用者本地儲存的隻是版本倉庫的一個副本,Svn中的分支非常臃腫。

Git安裝

 git在Linux上安裝非常簡單,本文主要講解在windows下的安裝

1.官網下載下傳

https://gitforwindows.org/
Git教程1(安裝及基本操作)

安裝

 輕按兩下直接安裝,一直預設安裝即可。

安裝成功

 安裝後在開始中會出來git相關的菜單

Git教程1(安裝及基本操作)
 同時滑鼠右鍵也有git相關的菜單選項
Git教程1(安裝及基本操作)

配置個人資訊

 安裝成功我們還要完成最後一步設定。設定個人的資訊

Git教程1(安裝及基本操作)
輸入如下指令:

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

建立版本庫

 版本庫也就是我們平常說的倉庫,repository。其實也就是個檔案夾,隻是這個檔案夾被git管理,該檔案夾中的檔案的建立、修改、删除都能夠被追蹤。

建立檔案夾

Git教程1(安裝及基本操作)

初始化操作

 通過git init指令把這個目錄變成Git可以管理的倉庫,建立成功後在該檔案夾下會多出一個.git的檔案夾。

git init      
Git教程1(安裝及基本操作)

 Git目錄是用來來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裡面的檔案,不然改亂了,就把Git倉庫給破壞了。

基本操作

添加檔案到版本庫

 注意:在window系統中,編輯檔案不要使用記事本操作,因為在操作中文的時候會有問題,推薦用Notpad++,但是編碼方式得設定下。

Git教程1(安裝及基本操作)

建立一個普通檔案

Git教程1(安裝及基本操作)
Git教程1(安裝及基本操作)

執行git add 指令添加到倉庫

git add read.txt      

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

執行 git commit 指令送出

$ git commit -m "first commit"
[master (root-commit) 9d37174] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 read.txt      

  commit -m的-m後面跟的是本次操作的備注說明資訊。最好是有意義的,也就是下次看到這個說明就清楚送出了什麼内容。

 為什麼Git添加檔案需要add,commit一共兩步呢?因為commit可以一次送出很多檔案,是以你可以多次add不同的檔案

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

status和diff指令

Git教程1(安裝及基本操作)

正常狀态下執行兩個指令

Git教程1(安裝及基本操作)

對read.txt檔案進行修改

hello git
hello git 2      

執行status指令

注意: 沒有執行git add指令

$ git status read.txt
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:   read.txt      

狀态資訊告訴我們read.txt檔案被修改了,但是還沒有被送出。

執行diff指令檢視不同

$ git diff read.txt
warning: LF will be replaced by CRLF in read.txt.
The file will have its original line endings in your working directory
diff --git a/read.txt b/read.txt
index 8d0e412..a11a392 100644
--- a/read.txt
+++ b/read.txt
@@ -1 +1,2 @@
 hello git
+hello git 2      

 通過此指令我們能夠看到增加的是 hello git 2這行資訊,知道了對readme.txt作了什麼修改後,再把它送出到倉庫就放心多了,送出修改和送出新檔案是一樣的兩步

add指令

$ git status read.txt
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   read.txt      

 git status告訴我們,将要被送出的修改包括readme.txt,下一步,就可以放心地送出了

commit操作

$ git commit -m 'first update file'
[master 27492ed] first update file
 1 file changed, 1 insertion(+)      

送出後再執行 git commit 指令

$ git status read.txt
On branch master
nothing to commit, working tree clean      

 Git告訴我們目前沒有需要送出的修改,而且,工作目錄是幹淨(working tree clean)的

小結

Git教程1(安裝及基本操作)

版本回退

log指令

 剛剛我們對read.txt檔案執行兩次操作,我們還能記得住我們做了什麼操作,但是當我們操作了一段時間後,修改的越來越多,那麼我們就會忘記很多以前的操作。這時我們可以通過log指令來檢視曆史資訊

$ git log read.txt
commit 27492ed2ca522c05a9293a0c48e876a81e795522 (HEAD -> master)
Author: dpb <[email protected]>
Date:   Wed Jan 30 20:51:44 2019 +0800

    first update file

commit cfe85b8a01fb09583f29f093915c9bb5b788123f
Author: dpb <[email protected]>
Date:   Wed Jan 30 20:46:54 2019 +0800

    first add file      

 git log指令顯示從最近到最遠的送出日志,每條日志資訊占了五行記錄,如果日志比較多的情況下。我們可以在指令後添加 –pretty=oneline單行來顯示日志資訊

$ git log --pretty=oneline  read.txt
27492ed2ca522c05a9293a0c48e876a81e795522 (HEAD -> master) first update file
cfe85b8a01fb09583f29f093915c9bb5b788123f first add file      

提示‘27492ed2ca…’這一長串的資訊既是版本号

 為了便于示範又對檔案修改了一次,log有了三次記錄

$ git log read.txt
commit a1d1909f554a531acdec30d96ac67db9047599f8 (HEAD -> master)
Author: dpb <[email protected]>
Date:   Wed Jan 30 21:08:42 2019 +0800

    third update file

commit 27492ed2ca522c05a9293a0c48e876a81e795522
Author: dpb <[email protected]>
Date:   Wed Jan 30 20:51:44 2019 +0800

    first update file

commit cfe85b8a01fb09583f29f093915c9bb5b788123f
Author: dpb <[email protected]>
Date:   Wed Jan 30 20:46:54 2019 +0800

    first add file      

 現在我們有三個版本即 ‘third update file’,‘first update file’,‘first add file’

檢視目前檔案内容:

$ cat read.txt
hello git
hello git 2
hello git 3      

回退到上一個版本

$ git reset --hard HEAD^
HEAD is now at 27492ed first update file

dengp@DESKTOP-2F8A7PB MINGW64 /c/tools/GitResource/gitRepository1 (master)
$ cat read.txt
hello git
hello git 2

dengp@DESKTOP-2F8A7PB MINGW64 /c/tools/GitResource/gitRepository1 (master)
$ git log read.txt
commit 27492ed2ca522c05a9293a0c48e876a81e795522 (HEAD -> master)
Author: dpb <[email protected]>
Date:   Wed Jan 30 20:51:44 2019 +0800

   first update file

commit cfe85b8a01fb09583f29f093915c9bb5b788123f
Author: dpb <[email protected]>
Date:   Wed Jan 30 20:46:54 2019 +0800

   first add file      

 執行以上指令我們發現檔案内容回退到了上一個版本,log中也看不到’third update file’中的資訊了,好像這個版本從來沒有出現過一樣。

回到之前最新版本

$ git reset --hard a1d1909f5
HEAD is now at a1d1909 third update file

dengp@DESKTOP-2F8A7PB MINGW64 /c/tools/GitResource/gitRepository1 (master)
$ cat read.txt
hello git
hello git 2
hello git 3      

 首先我們發現資訊被我們找回來了,其次‘a1d1909f5’是最新版本的版本号,雖然不全,但是前幾位要正确,git會自動比對

 Git的版本回退速度非常快,因為Git在内部有個指向目前版本的HEAD指針,當你回退版本的時候,Git僅僅是把HEAD從指向first update file

Git教程1(安裝及基本操作)

回退後

Git教程1(安裝及基本操作)

 版本回退其實就是指針的改變。有時候我們想要回退到以前的最新版本,這時候log指令檢視不到對應的版本号,在次場景下我們可以通過git reflog來檢視

Git教程1(安裝及基本操作)

小結:

HEAD指向的版本就是目前版本,是以,Git允許我們在版本的曆史之間穿梭,使用指令git reset --hard commit_id。

切換前,用git log可以檢視送出曆史,以便确定要回退到哪個版本。

要切換未來,用git reflog檢視指令曆史,以便确定要回到未來的哪個版本。

繼續閱讀