目錄
1、git初識
1.1、存在的問題
1.2、版本控制器
1.3、git安裝
1.3.1、CentOS平臺
1.3.2、ubuntu平臺
2、git基本操作
2.1、創建倉庫
2.2、配置git
3、工作區、暫存區、版本庫
4、基本操作
4.1、場景一
4.2、場景二
4.3、修改文件
5、版本回退
6、撤銷修改
6.1、情況一
6.2、情況二
6.3、情況三
7、刪除文件
1、git初識
1.1、存在的問題
在?作或學習時,經常會遇到這樣的情況:
我們在編寫各種?檔時,為了防??檔丟失,更改失誤,失誤后能恢復到原來的版本,不得不復制出?個副本。?如:
“報告-v1”
“報告-v2”
“報告-v3”
“報告-確定版”
“報告-最終版”
.................
每個版本有各?的內容,但最終會只有?份報告需要被我們使?。
但在此之前的?作都需要這些不同版本的報告,于是每次都是復制粘貼副本,產出的?件就越來越 多,?件多不是問題,問題是:隨著版本數量的不斷增多,我們就不記得這些版本各?都是修改了什么 ,?檔如此,我們寫的項?代碼,也是存在這個問題的。
隨著版本的增多,維護好版本是很有挑戰的一件事。
1.2、版本控制器
為了能夠更?便我們管理這些不同版本的?件,便有了版本控制器。所謂的版本控制器,就是能讓我們能了解到?個?件的歷史,以及它的發展過程的系統。通俗的講就是?個可以記錄?程的每?次改動和版本迭代的?個管理系統,同時也?便多?協同作業。
?前最主流的版本控制器就是Git。Git可以控制電腦上所有格式的?件,例如doc、excel、dwg、 dgn、rvt等等。對于我們開發?員來說,Git最重要的就是可以幫助我們管理軟件開發項?中的源代碼?件。
注意:所有的版本控制系統,Git也不例外,其實只能跟蹤?本?件的改動,?如TXT?件,網頁,所有的程序代碼等等。版本控制系統可以告訴你每次的改動,比如在第5?加了?個單詞 “Linux”,在第8?刪了?個單詞“Windows”。 而圖?、視頻這些?進制?件,雖然也能由版本控制系統管理,但沒法跟蹤?件的變化,只能把?進制?件每次改動串起來,也就是只知道圖?從100KB改成了120KB,但到底改了啥,版本控制系統不知道,也沒法知道。
1.3、git安裝
Git 是開放源代碼的代碼托管?具,最早是在Linux下開發的。開始也只能應?于Linux平臺,后?慢慢的被移植到windows下,現在,Git可以在Linux、Unix、Mac和Windows這??平臺上正常運?了。
1.3.1、CentOS平臺
安裝git,以centos7.6為例:
查看是否安裝了Git,以及如果安裝了的話,Git的版本:
git --version
因為我是安裝過的,所以結果為:
所以我先把安裝過的git給卸載掉:
sudo yum remove git -y
卸載完成后,再使用git --version的時候就會出現:
接下來,我們開始下載git:
sudo yum install git -y
下載完成后,可以使用git --version來查看git是否被下載完成。
1.3.2、ubuntu平臺
安裝git,以ubuntu20.04為例:
sudo apt-get install git -y
卸載git:
sudo apt-get remove git -y
2、git基本操作
2.1、創建倉庫
要提前說的是,倉庫是進?版本控制的?個?件?錄。我們要想對?件進?版本控制,就必須先創建?個倉庫出來,這個倉庫就是一個目錄。
創建?個Git本地倉庫對應的命令為:
git init
注意:命令要在?件?錄下執?,也就是說首先要創建一個目錄,然后在該目錄里面使用該命令。
例如:
使用ls -al,我們發現,在當前目錄下多了一個隱藏文件:
當前?錄下多了?個 .git 的隱藏?件,.git?錄是Git來跟蹤管理倉庫的,不要?動修改這個?錄??的?件,不然改亂了,就把Git倉庫給破壞了。
我們可以使用如下命令,查看.git目錄:
tree ./.git
如圖所示:
2.2、配置git
當安裝Git后?先要做的事情是設置你的用戶名稱和e-mail地址,這是?常重要的。配置命令為:
git config [--global] user.name "Your Name"
git config [--global] user.email "email@example.com"
其中--global 是?個可選項。如果使?了該選項,表?這臺機器上所有的Git倉庫都會使?這個配置(一臺機器上是可以創建多個倉庫的)。如果你希望在不同倉庫中使?不同的name 或 e-mail ,可以不要該選項。注意的是,執?命令時必須要在倉庫?。
查看配置命令為:
git config -l
刪除對應的配置命令為:
git config [--global] --unset user.name
git config [--global] --unset user.email
例如:
3、工作區、暫存區、版本庫
工作區:是在電腦上你要寫代碼或?件的?錄。
暫存區:英?叫stage或index。?般存放.git目錄下的index文件中,我們把暫存區有時也叫作索引(index)。
版本庫:?名倉庫,英?名repository 。?作區有?個隱藏?錄 .git ,它不算?作區,?是Git的版本庫。這個版本庫??的所有?件都可以被Git管理起來,每個?件的修改、刪除,Git 都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。
下?這個圖展?了?作區、暫存區和版本庫之間的關系:
圖中左側為?作區,右側為版本庫。Git的版本庫?存了很多東西,其中最重要的就是暫存區。
在創建Git版本庫時,Git會為我們?動創建?個唯?的master分?,以及指向master的?個指針叫HEAD。(分?和HEAD的概念后?再說)
當對?作區修改或新增或刪除的?件執? git add 命令時,暫存區?錄樹的?件索引會被更新。
當執?提交操作 git commit 時,master分?會做相應的更新,可以簡單理解為暫存區的?錄樹才會被真正寫到版本庫中。
對象庫:英文名objects。修改或新增或刪除工作區的內容,然后經過git add后會寫入對象庫的一個新的git對象中。對象庫中才是存放的實實在在的內容,暫存區和master都是存放的索引。
由上