Git介绍及常用操作演示(一)--技术流ken
Git介紹及常用操作演示(一)--技術流ken
?
Git介紹
?
?Git(讀音為/g?t/。)是一個開源的分布式版本控制系統,可以有效、高速的處理從很小到非常大的項目版本管理。 Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。--摘自360百科
?Git是分布式版本控制系統,那么它就沒有中央服務器的,每個人的電腦就是一個完整的版本庫,所以,工作的時候就不需要聯網了,因為版本庫都是在自己的電腦 上。現在每個人的電腦都有一個完整的版本庫,那多個人如何協作呢?比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
主要有如下特點:
1. 版本控制
2. 分布式
3. 工作過程是將服務器上的代碼下載到本地,本地開發完成后,在提交到服務器端
git相比于svn功能更加的強大,命令也很多。本篇博客將詳細介紹一些常用命令的使用操作。
?
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 +0800v1?
第六步:往測試文件里面追加數據
[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 +0800v2commit 15370fed2791ba4c978018f840caed22fd38221f Author: ken <1614833@qq.com> Date: Tue Nov 20 10:17:18 2018 +0800v1?
第九步:恢復到第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 +0800v1?
第十步:恢復到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 +0800v2commit 15370fed2791ba4c978018f840caed22fd38221f Author: ken <1614833@qq.com> Date: Tue Nov 20 10:17:18 2018 +0800v1?
演示2:撤銷工作區的內容
第一步:創建一個文件
[root@ken kenken]# echo "test1">e.tt [root@ken kenken]# echo "test1">e.tt?
第二步:把這個文件添加到緩存區
[root@ken kenken]# git add e.tt?
第三步:在文件追加內容
[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 +0800k.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 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 +0800k.ttcommit ec9c03a48c816aa08fdd2216effdd2f124f1b4e3 Author: ken <1614833@qq.com> Date: Tue Nov 20 12:40:07 2018 +0800v4commit 1334466fd86ba0ba4ec95147809d71cb21345e95 Author: ken <1614833@qq.com> Date: Tue Nov 20 12:28:11 2018 +0800v3commit 15370fed2791ba4c978018f840caed22fd38221f Author: ken <1614833@qq.com> Date: Tue Nov 20 10:17:18 2018 +0800v1?
第二步:查看所需要回滾的版本的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 +0800v3commit 15370fed2791ba4c978018f840caed22fd38221f Author: ken <1614833@qq.com> Date: Tue Nov 20 10:17:18 2018 +0800v1?
第五步:回退到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 +0800v4commit 1334466fd86ba0ba4ec95147809d71cb21345e95 Author: ken <1614833@qq.com> Date: Tue Nov 20 12:28:11 2018 +0800v3commit 15370fed2791ba4c978018f840caed22fd38221f Author: ken <1614833@qq.com> Date: Tue Nov 20 10:17:18 2018 +0800v1?
Git分支介紹
?
幾乎所有的版本控制系統都以某種形式支持分支。 使用分支意味著你可以把你的工作從開發主線上分離開來,以免影響開發主線。?
Git 處理分支的方式可謂是難以置信的輕量,創建新分支這一操作幾乎能在瞬間完成,并且在不同分支之間的切換操作也是一樣便捷。 與許多其它版本控制系統不同,Git 鼓勵在工作流程中頻繁地使用分支與合并,哪怕一天之內進行許多次。
?
Git分支使用演示
?
第一步:查看分支
*表示當前所處的分支位置
[root@ken kenken]# git branch * master?
第二步:創建分支
[root@ken kenken]# git branch ken [root@ken kenken]# git branchken * master?
第三步:切換分支
[root@ken kenken]# git checkout ken Switched to branch 'ken' [root@ken kenken]# git branch * kenmaster?
第四步:在分支里面操作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 branch1 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-forwarde.tt | 1 +1 file changed, 1 insertion(+) [root@ken kenken]# cat e.tt test1 test2 test3 test4 test5 888888總結
以上是生活随笔為你收集整理的Git介绍及常用操作演示(一)--技术流ken的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB Mann-Kendall突
- 下一篇: 顶级计算机语言学大会COLING 201