目錄
- 一、初識Git
- 二、 在Linux底下安裝Git
- 一)centOS
- 二)Ubuntu
- 三、 Git基本操作
- 一) 創建本地倉庫
- 二)配置本地倉庫
- 三)認識工作區、暫存區、版本庫
- 四)添加文件
- 五)查看.git文件
- 六)修改文件
- 七)版本回退
- 八)撤銷修改
- 九)刪除文件
努力經營當下,直至未來明朗!
一、初識Git
- 版本控制器:記錄每次的修改以及版本迭代的一個管理系統。
- Git:其實就是最常用的版本控制器。可以維護控制電腦上所有格式的文檔。
如:對于開發人員來說,最主要就是維護項目中的源代碼文件。 - 注意:對于二進制文件如圖片、視頻等,具體修改的內容是未知的,只是知道如修改了其文件的存儲大小等信息。
二、 在Linux底下安裝Git
此時我在我的Xshell上的服務器來進行安裝(centos)。
一)centOS
- 首先查看當前服務器底下有沒有安裝Git
git --version
- 如果已經安裝,需要進行卸載
sudo yum remove git -y
-
補充:清屏的話使用
clear
-
安裝git
sudo yum install git -y
- 然后再進行檢查
git --version
二)Ubuntu
- 首先查看當前服務器底下有沒有安裝Git
git --version
- 如果已經安裝,需要進行卸載
sudo apt-get remove git -y
-
補充:清屏的話使用
clear
-
安裝git
sudo apt-get install git -y
- 然后再進行檢查
git --version
三、 Git基本操作
一) 創建本地倉庫
- 只有在Git倉庫下的文件才能被Git追蹤管理
- 以下創建本地倉庫的操作在Xshell中進行完成!
1)首先創建一個目錄
mkdir gitcode -- [即: mkdir 目錄名]
2)切換到該目錄底下
cd gitcode/ -- [即: cd 目錄名/]
3)進行目錄的展示
ls
4)在該目錄下創建空的Git倉庫:.git
git init
5)顯示當前目錄下所有文件(Ubuntu下適用)
la
6) 樹形展示該目錄下的所有文件:千萬不要手動修改任何文件!!
tree .git/
二)配置本地倉庫
- 當成功創建出一個本地倉庫之后,首先就是要對本地倉庫新增兩個配置項:name和email。
- 為本地倉庫設置配置項:
git config
- 配置name和email:
git config user.name "xxx(實際name)"
git config user.email "xxx(實際email)"
- 查看配置,看配置是否已經成功
git config -l
- 重置刪除配置項
git config --unset user.name
git config --unset user.name
- 一臺服務器上可以創建多個本地倉庫,加上–global的意思其實就是當前的配置項是會在當前機器的所有git倉庫下都生效的
git config --global user.name "xxx"
git config --global user.name "xxx"
- 在進行global全局配置之后發現直接使用unset重置是失敗的,此時想要重置必須在–unset之前加上–global
三)認識工作區、暫存區、版本庫
- 在gitcode目錄下新建一個文件readMe,使用git進行管理.
① 但是,在touch完成的情況下,Git是不能管理該readMe文件的。
② .git稱為版本庫(倉庫),readMe文件稱為工作區
touch readMe
-
強調:不允許在.git下手動修改!!
-
工作區、版本庫和暫存區之間的關系:
可以參考:Git工作區、暫存區和版本庫
-
如何將工作區中的內容使用git來進行管理:
1)對工作區進行修改操作(如:新增、修改、刪除)之后進行add
操作則進入版本庫的暫存區
2)然后對暫存區中的內容進行commit
之后就被提交到master分支底下
3)此時就將工作區中的內容真正放到了git倉庫下進行管理 -
objects對象庫:工作區文件在執行add命令之后,修改的工作區內容就會被寫入對象庫的一個新的git對象中,即:維護了文件的版本
-
暫存區中存儲的不是一個個對象,而是對象索引;master分支中也是一樣的,存儲的也是對象的索引,也是比較輕量的。
-
因為倉庫是剛init的,所以目前還沒有暫存區,所以
tree .git
之后看不到index是正常的。
四)添加文件
- 操作文件:
編輯文件: vim 文件名
保存并退出: :wq
在屏幕上打印文件內容:cat 文件名
- 將文件添加到版本庫的暫存區:
(在已經創建的gitcode目錄下操作)
git add 文件名1 文件名2 ··· // 提交該文件
git add . // 提交該目錄下所有文件
- 將暫存區文件提交到master分支:
git commit -m "提交的細節描述"
補充:如果在進行該操作時出現了以下異常:
*** Please tell me who you are.Rungit config --global user.email "you@example.com"git config --global user.name "Your Name"to set your account's default identity.
Omit --global to set the identity only in this repository.fatal: unable to auto-detect email address (got 'root@hecs-279575.(none)')
[root@hecs-279575 gitcode]# git log
fatal: bad default revision 'HEAD'
此時,只需要在當前輸入下面兩句命令,把引號里的改成自己的郵箱和賬號就OK了,然后就可以繼續操作了
git config --global user.email "you@example.com"git config --global user.name "Your Name"
- 打印提交記錄
git log
git log --pretty=one-line // 打印一行漂亮直觀日志
五)查看.git文件
根據commit_id來打印文件
git cat-file -p commit_id
六)修改文件
-
Git追蹤管理的不是文件,其實是修改。
-
修改某個文件的內容,其實就是對該文件進行一個編輯操作,所以使用的是vim操作
-
查看版本庫的狀態:
git status
-
查看暫存區和工作區內容的差異:
git diff 文件名
- 查看版本庫和工作區文件的區別:
git diff HEAD -- 文件名
七)版本回退
-
版本回退命令:
git reset [--soft | --mixed | --hard] [HEAD] // 本質回退的是版本庫的內容;還可以回退到當前版本,即暫存區和工作區代碼回退到和版本庫中一致
–soft :只回退版本庫中的內容,工作區和暫存區的內容不進行回退
–mixed(默認): 回退的是版本庫和暫存區的內容,工作區的內容不進行回退
–hard: 回退版本庫、暫存區、工作區的內容。(==慎用!!==工作區中的代碼也被干掉的話其實是非常頭疼的,直接找不回來了) -
使用示例:
git reset [--hard] commit_id
// 代表回退到commit_id這個版本,該版本之后提交的內容都消失
- 如果我進行回退之后后悔了,可以利用之前git log --pretty=oneline打印好的commit_id回到想要回到的版本,同樣是使用
git reset [--hard] commit_id
4. 那如果git log --pretty=oneline打印好的commit_id已經被clear,此時就使用git reflog
打印出所使用的命令進行的操作,最前面的就是commit_id,依舊可以利用該commit_id進行版本的回退
-
git版本回退速度很快的原因:
HEAD指針是指向master的,而master中存放的是commit_id,所以在進行版本回退的過程中其實只需要修改master的commit_id即可,將指針指向新的內容。 -
回退到當前版本:
git reset [--mixed | --hard] HEAD [filename]
回退到當前版本的前n個版本:git reset [--mixed | --hard] HEAD^^ [filename]
(^的數量取決于回退到前n個版本)
八)撤銷修改
- 工作區、暫存區、版本庫的回退操作
1)工作區和暫存區的回退
2)工作區、暫存區、版本庫的回退
九)刪除文件
- 針對工作區中的文件進行刪除:
rm [filename]
- 將文件從工作區、暫存區、版本庫中刪除:
rm [filename]
git add [filename]
git commit -m "xxx"
- 將文件從工作區、暫存區、版本庫中刪除,可以簡化為以下倆步驟:
git rm [filename] // 將文件從工作區、暫存區刪除
git commit -m "xxx"