Git介紹及經常使用操做演示(一)--技術流ken

 

Git介紹

 

 Git(讀音爲/gɪt/。)是一個開源的分佈式版本控制系統,能夠有效、高速的處理從很小到很是大的項目版本管理。 Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。git

 Git是分佈式版本控制系統,那麼它就沒有中央服務器的,每一個人的電腦就是一個完整的版本庫,因此,工做的時候就不須要聯網了,由於版本庫都是在本身的電腦 上。如今每一個人的電腦都有一個完整的版本庫,那多我的如何協做呢?好比說本身在電腦上改了文件A,其餘人也在電腦上改了文件A,這時,大家兩之間只需把各自的修改推送給對方,就能夠互相看到對方的修改了。數據庫

主要有以下特色:緩存

1. 版本控制
2. 分佈式
3. 工做過程是將服務器上的代碼下載到本地,本地開發完成後,在提交到服務器端服務器

git相比於svn功能更加的強大,命令也不少。本篇博客將詳細介紹一些經常使用命令的使用操做。curl

 

Git和SVN的對比

 

1.git是分佈式的,svn是集中式的。(最核心)分佈式

2.git是每一個歷史版本都存儲完整的文件,便於恢復,svn是存儲差別文件,歷史版本不可恢復。(核心)svn

3.git可離線完成大部分操做,svn則不能。測試

4.git有着更優雅的分支和合並實現。this

5.git有着更強的撤銷修改和修改歷史版本的能力url

6.git速度更快,效率更高。

基於以上區別,git有了很明顯的優點,特別在於它具備的本地倉庫。

Git幾個概念

 

一. 工做目錄

     工做目錄是對項目的某個版本獨立提取出來的內容。這些從 Git 倉庫的壓縮數據庫中提取出來的文件,放在磁盤上供你使用或修改。

二. 暫存區域

     是一個文件,保存了下次將提交的文件列表信息,通常在 Git 倉庫目錄中。有時候也被稱做`‘索引’',不過通常說法仍是叫暫存區域。

三. Git 倉庫目錄

    是Git 用來保存項目的元數據和對象數據庫的地方。這是 Git 中最重要的部分,從其它計算機克隆倉庫時,拷貝的就是這裏的數據。

 

Git工做流程

 

基本的 Git 工做流程以下:

在工做目錄中修改文件 > 暫存文件,將文件的快照放入暫存區域 > 提交更新,找到暫存區域的文件,將快照永久性存儲到 Git 倉庫目錄。

 

若是 Git 目錄中保存着的特定版本文件,就屬於已提交狀態。若是做了修改並已放入暫存區域,就屬於已暫存狀態。若是自上次取出後,做了修改但尚未放到暫存區域,就是已修改狀態。

 

Git的安裝

 

第一種安裝方式:yum進行安裝

[root@ken ~]# yum install git -y

 

第二種安裝方式:編譯安裝

 第一步:上傳安裝包並解壓

[root@ken ~]# rz
[root@ken ~]# ls | grep git
git-v2.7.4.zip
[root@ken ~]# unzip git-v2.7.4.zip 

 

第二步:安裝依賴

[root@ken git-2.7.4]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y

 

第三步:進入解壓下目錄下並執行編譯

 

[root@ken git-2.7.4]# make prefix=/usr/local/git all
[root@ken git-2.7.4]# make prefix=/usr/local/git install

 

第四步:導入二進制程序

[root@ken git-2.7.4]# rm -rf /usr/bin/git
[root@ken git-2.7.4]# ln -s /usr/local/git/bin/git /usr/bin/git
[root@ken git-2.7.4]# git --version
git version 2.7.4

 

演示1:簡單基礎演示

第一步:建立一個目錄,並進入

[root@ken ~]# mkdir /kenken
[root@ken ~]# cd /kenken

 

第二步:初始化目錄

[root@ken kenken]# git init

 

第三步:建立一個測試文件

[root@ken kenken]# echo  "this is ken">>a.tt

 

第四步:提交

[root@ken kenken]# git add a.tt
[root@ken kenken]# git commit -m "v1"

 

第五步:查看

[root@ken kenken]# git log
commit 15370fed2791ba4c978018f840caed22fd38221f
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 10:17:18 2018 +0800

    v1

 

第六步:往測試文件裏面追加數據

[root@ken kenken]# echo "new data" >>a.tt

 

第七步:提交

[root@ken kenken]# git add a.tt
[root@ken kenken]# git commit -m "v2"

 

第八步:再次查看

[root@ken kenken]# git log
commit d1f52146b390c95c614e8ae7acc922da0f7e2d0d
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 10:34:11 2018 +0800

    v2

commit 15370fed2791ba4c978018f840caed22fd38221f
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 10:17:18 2018 +0800

    v1

 

第九步:恢復到第v1版本

[root@ken kenken]# git reset --hard HEAD~1
HEAD is now at 15370fe v1
[root@ken kenken]# git log
commit 15370fed2791ba4c978018f840caed22fd38221f
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 10:17:18 2018 +0800

    v1

 

第十步:恢復到v2版本

[root@ken kenken]# git reflog               #首先使用git reflog能夠查看commit值
15370fe HEAD@{0}: reset: moving to HEAD~1
d1f5214 HEAD@{1}: commit: v2
15370fe HEAD@{2}: reset: moving to HEAD~1
22d39cb HEAD@{3}: commit: v2
15370fe HEAD@{4}: commit (initial): v1
[root@ken kenken]# git reset --hard d1f5214    #恢復的時候指定conmit值
HEAD is now at d1f5214 v2
[root@ken kenken]# git log                    #查看發現已經恢復到v2版本
commit d1f52146b390c95c614e8ae7acc922da0f7e2d0d
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 10:34:11 2018 +0800

    v2

commit 15370fed2791ba4c978018f840caed22fd38221f
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 10:17:18 2018 +0800

    v1

 

演示2:撤銷工做區的內容

第一步:建立一個文件

[root@ken kenken]# echo "test1">>e.tt
[root@ken kenken]# echo "test2">>e.tt

 

第二步:把這個文件添加到緩存區

[root@ken kenken]# git add e.tt

 

第三步:在文件追加內容

在包含.git的目錄中,只要當前目錄下的文件有修改都會自動進入工做區

因此下面當往文件e.tt中添加test3的時候。e.tt這個文件就進入到了工做區了

 

1.文件進入工做區:包含.git隱藏文件的目錄中,文件修改就會自動進入

2.文件進入緩存區:git add .

3.文件進入倉庫:git commit -m 'v1'

[root@ken kenken]# echo "test3">>e.tt

 

第四步:查看工做區

[root@ken kenken]# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#    new file:   e.tt
#
# 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:   e.tt
#

 

第五步:撤銷工做區的內容

使用命令git checkout -- filename便可進行回滾

[root@ken kenken]# git checkout -- e.tt   #數據回滾
[root@ken kenken]# git status             #查看狀態
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#    new file:   e.tt
#
[root@ken kenken]# cat e.tt                #查看文件內容,發現test3內容已經沒有了
test1
test2

 

演示3:撤銷緩存區的內容

第一步:建立文件並進行提交

[root@ken kenken]# echo "1111">k.tt
[root@ken kenken]# git add k.tt
[root@ken kenken]# git commit -m "k.tt"
[root@ken kenken]# git log
commit c5f46907ce0dfd6722b091fa7a7053ff48507ace
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 12:42:30 2018 +0800

    k.tt

 

第二步:修改文件並加入到緩存區中

第一步必定要提交,才能看到效果

[root@ken kenken]# echo "222">>k.tt
[root@ken kenken]# echo "333">>k.tt
[root@ken kenken]# git add k.tt
[root@ken kenken]# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#    modified:   k.tt
#

 

第三步:緩存區進行回退

[root@ken kenken]# git reset HEAD k.tt
Unstaged changes after reset:
M    k.tt

 

第四步:緩存區進行回退

[root@ken kenken]# 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:   k.tt
#
no changes added to commit (use "git add" and/or "git commit -a")

 

第五步:工做區進行回滾

其實如今就已經回到了演示2中了

回退完成以後能夠發現以前寫的222和333 已經沒有了

[root@ken kenken]# git checkout -- k.tt
[root@ken kenken]# git status
# On branch master
nothing to commit, working directory clean
[root@ken kenken]# cat k.tt 
1111

 

演示4:撤銷倉庫中的內容

第一步:查看歷史版本

咱們如今處於k.tt中,如今但願回到v3中

[root@ken kenken]# git log
commit c5f46907ce0dfd6722b091fa7a7053ff48507ace
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 12:42:30 2018 +0800

    k.tt

commit ec9c03a48c816aa08fdd2216effdd2f124f1b4e3
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 12:40:07 2018 +0800

    v4

commit 1334466fd86ba0ba4ec95147809d71cb21345e95
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 12:28:11 2018 +0800

    v3

commit 15370fed2791ba4c978018f840caed22fd38221f
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 10:17:18 2018 +0800

    v1

 

第二步:查看所須要回滾的版本的commit值

經過上面咱們能夠看到v3的commit值爲1334466fd86ba0ba4ec95147809d71cb21345e95

 

第三步:執行回滾操做

commit值沒有必要所有寫出來,只要寫一部分就能夠了

[root@ken kenken]# git reset --hard 1334466f

 

第四步:查看版本狀態

如今咱們處於v3版本之中

[root@ken kenken]# git log
commit 1334466fd86ba0ba4ec95147809d71cb21345e95
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 12:28:11 2018 +0800

    v3

commit 15370fed2791ba4c978018f840caed22fd38221f
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 10:17:18 2018 +0800

    v1

 

第五步:回退到v4版本中

咱們知道回退版本須要用到commit值

可是如今經過git log已經看不到v4的commit值了,如今怎麼辦吶?

能夠經過git reflog查看全部的歷史操做

找到v4前面的值便可

[root@ken kenken]# git reflog
1334466 HEAD@{0}: reset: moving to 1334466f
c5f4690 HEAD@{1}: commit: k.tt
ec9c03a HEAD@{2}: commit: v4
1334466 HEAD@{3}: commit: v3
15370fe HEAD@{4}: reset: moving to HEAD~1
d1f5214 HEAD@{5}: reset: moving to d1f5214
15370fe HEAD@{6}: reset: moving to HEAD~1
d1f5214 HEAD@{7}: commit: v2
15370fe HEAD@{8}: reset: moving to HEAD~1
22d39cb HEAD@{9}: commit: v2
15370fe HEAD@{10}: commit (initial): v1

 

第六步:回滾到v4版本

[root@ken kenken]# git reset --hard ec9c03a 
HEAD is now at ec9c03a v4
[root@ken kenken]# git log
commit ec9c03a48c816aa08fdd2216effdd2f124f1b4e3
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 12:40:07 2018 +0800

    v4

commit 1334466fd86ba0ba4ec95147809d71cb21345e95
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 12:28:11 2018 +0800

    v3

commit 15370fed2791ba4c978018f840caed22fd38221f
Author: ken <1614833@qq.com>
Date:   Tue Nov 20 10:17:18 2018 +0800

    v1

 

Git分支介紹

 

幾乎全部的版本控制系統都以某種形式支持分支。 使用分支意味着你能夠把你的工做從開發主線上分離開來,以避免影響開發主線。 

Git 處理分支的方式可謂是難以置信的輕量,建立新分支這一操做幾乎能在瞬間完成,而且在不一樣分支之間的切換操做也是同樣便捷。 與許多其它版本控制系統不一樣,Git 鼓勵在工做流程中頻繁地使用分支與合併,哪怕一天以內進行許屢次。

 

Git分支使用演示

 

第一步:查看分支

*表示當前所處的分支位置

[root@ken kenken]# git branch
* master

 

第二步:建立分支

[root@ken kenken]# git branch ken
[root@ken kenken]# git branch
  ken
* master

 

第三步:切換分支

[root@ken kenken]# git checkout ken
Switched to branch 'ken' [root@ken kenken]# git branch * ken master

 

第四步:在分支裏面操做e.tt

[root@ken kenken]# ls
a.tt  c.tt  d.tt  e.tt
[root@ken kenken]# echo "888888">>e.tt [root@ken kenken]# cat e.tt test1 test2 test3 test4 test5 888888

 

第五步:提交

git add .表示提交所有

[root@ken kenken]# git add .
[root@ken kenken]# git commit -m "test for branch" [ken b621584] test for branch 1 file changed, 1 insertion(+)

 

第六步:切換回主分支並查看文件

如今查看e.tt並無看到剛纔子分支提交的內容

[root@ken kenken]# git checkout master 
Switched to branch 'master' [root@ken kenken]# git branch ken * master [root@ken kenken]# cat e.tt test1 test2 test3 test4 test5

 

第七步:合併子分支

合併以後發現如今主分支也能夠看到剛纔子分支添加的內容了

[root@ken kenken]# git merge ken 
Updating ec9c03a..b621584
Fast-forward e.tt | 1 + 1 file changed, 1 insertion(+) [root@ken kenken]# cat e.tt test1 test2 test3 test4 test5 888888
相關文章
相關標籤/搜索