自動化部署——Git之初識Git及Git命令的詳細使用

一、Git原理

1.1 什麼是Git

Git 是一種在全球範圍都廣受歡迎的 分佈式版本控制系統。它就沒有中央服務器的,每個人的電腦就是一個完整的版本庫,工作的時候就不用聯網了,因爲版本都是在自己的電腦上。最初Git是爲輔助 Linux 內核開發的。Git的作者是Linux之父李納斯·託沃茲。

  • 什麼又是版本控制呢? 版本控制(Revision control)是一種在開發的過程中用於管理我們對文件、目錄或工程等內容的修改歷史,方便查看更改歷史記錄,備份以便恢復以前的版本的軟件工程技術。簡單說就是用於管理多人協同開發項目的技術。
  • 優點:適合分佈式開發,強調個體;任意兩個開發者之間可以很容易的解決衝突;離線工作;速度快、靈活;公共服務器壓力和數據量都不會太大。

1.2 Git 工作流程

一般工作流程如下:

  1. 克隆 Git 資源作爲工作目錄。
  2. 在克隆的資源上添加或修改文件。
  3. 如果其他人修改了,你可以更新資源。
  4. 在提交前查看修改。
  5. 提交修改。
  6. 在修改完成後,如果發現錯誤,可以撤回提交併再次修改並提交。

在這裏插入圖片描述

二、Git 的安裝及簡單使用

2.1 安裝Git

yum install git -y

輸入git --version,可查看 git 的版本
在這裏插入圖片描述
在這裏插入圖片描述

2.2 創建倉庫

  • 倉庫,這個倉庫裏面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。

1、創建一個目錄 mkdir repository
2、通過git init命令把這個目錄變成Git可以管理的倉庫。
在這裏插入圖片描述
此時,repository版本庫裏會多一個 隱藏目錄.git,此目錄是 Git來跟蹤管理版本庫的
在這裏插入圖片描述
在這裏插入圖片描述

2.3 添加文件到版本庫

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

1、用命令git add告訴Git,把文件添加到倉庫

  • 命令git add ,可反覆多次使用,添加多個文件

在這裏插入圖片描述
2、用命令git commit告訴Git,把文件提交到倉庫

git commit -m "test.txt submit"
  • 命令git commit,可以一次提交很多文件,-m後面輸入的是本次提交的說明,可以輸入任意內容,最好是有意義的,這樣就能從歷史記錄裏方便地找到改動記錄。

在這裏插入圖片描述
3、修改test.txt文件內容,運行git status,告訴我們文件被修改過。

  • git status命令:查看倉庫當前的狀態
    在這裏插入圖片描述
  • git commit -a : 跳過使用暫存區域,自動把所有已經跟蹤過的文件暫存起來一併提交,從而跳過 git add 步驟

4、查看文件test.txt,如何被修改,運行git diff

  • 命令git diff:查看difference,查看文件具體的改變

在這裏插入圖片描述
5、重新添加修改後的文件,且提交。

在這裏插入圖片描述
在Git中,每當你文件修改完成時,就可以“保存一個快照”,這個快照在Git中被稱爲commit。一旦你把文件改亂了,或者誤刪了文件,還可以從最近的一個commit恢復,然後繼續工作。

6、我們可以用git log命令,查看文件更改的歷史記錄:

  • git log命令顯示從最近到最遠的提交日誌,我們可以看到3次提交,最近的一次是chenged test.txt,second(我自己又提交了一次),最遠一次test.txt submit

在這裏插入圖片描述

2.4 版本回退

現在,我們要把當前版本chenged test.txt,second回退到上一個版本chenged test.txt

1、使用git reset --hard命令,回退:

回退到上一版:	git reset --hard HEAD^
回退到倒數第二版: git rest --hard HEAD^^
回退到commit id爲xxxxxxx的版本 : git rest --hard xxxxxxx
  • 在Git中,用HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100。

在這裏插入圖片描述

  • git reset 和 git reset --hard區別:
    git reset(git reset –-soft)回退到某個版本,只回退了commit的信息,不會恢復到index file一級。如果還要提交,直接commit即可。
    git reset -–hard徹底回退到某個版本,本地的源碼也會變爲上一個版本的內容,撤銷的commit中所包含的更改被沖掉

2、我們現在又想回到之前的版本chenged test.txt,second,只要上面的命令行窗口還沒有被關掉,找到之前版本chenged test.txt,secondcommit id即可回到之前的版本。

git reset --hard <commit id>

在這裏插入圖片描述
當然,還可以使用git reflog查看命令歷史,回到未來的某個版本。

在這裏插入圖片描述

2.5 工作區和暫存區

在這裏插入圖片描述

  • 工作區:在電腦裏能看到的目錄,我的repository文件夾就是一個工作區
  • 版本庫:工作區的一個隱藏目錄.git,是Git的版本庫。其中,index就是暫存區,還有Git爲我們自動創建的第一個分支master,以及指向master的一個指針叫 HEAD

在這裏插入圖片描述

前面,我們把文件往Git版本庫裏添加的時候,是分兩步執行的:

  • 第一步: git add把文件添加進去,本質就是 把文件修改添加到暫存區
  • 第二步: git commit提交更改,本質就是 把暫存區的所有內容提交到當前分支

總的來說,需要提交的文件修改通通放到暫存區,然後,一次性提交暫存區的所有修改。
1、我們先對 test.txt進行修改,在新編輯一個test2在工作區。查看狀態git statustest2從來沒有被添加過,所以它的狀態是Untracked

在這裏插入圖片描述

2、使用兩次命令git add,將兩個文件都添加後,用git status再查看一下
在這裏插入圖片描述
此時,暫存區的狀態
在這裏插入圖片描述
3、執行git commit 就可以一次性把暫存區的所有修改提交到分支

一旦提交後,如果你又沒有對工作區做任何修改,那麼工作區就是“乾淨”的
在這裏插入圖片描述
此時,暫存區就沒有任何內容了
在這裏插入圖片描述
每次修改,如果不用 git add 到暫存區,那就不會加入到commit中,除非使用 git commit -a -m "xxx"

2.6 撤銷修改和刪除文件

1、 僅丟棄工作區的修改

git checkout -- file

2、 要丟棄已添加到暫存區的文件,但未再更改過

git reset HEAD <file>
	##把暫存區的修改撤銷掉,重新放回工作區,用HEAD時,表示最新的版本
git checkout -- file
	##丟棄工作區的修改

3、 要丟棄已添加到暫存區,又作了修改的文件

git checkout -- file
	##撤銷修改就回到添加到暫存區後的狀態

4、刪除文件
命令git rm用於刪除一個文件。

  • 如果一個文件已經提交到版本庫,那麼永遠不用擔心誤刪,但是隻能恢復文件到最新版本,你會丟失最近一次提交後你修改的內容。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章