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相关推荐
- git介绍和常用操作
转载于:https://www.cnblogs.com/kesz/p/11124423.html
- docker的文件流处理_Docker数据卷Volume实现文件共享、数据迁移备份(三)--技术流ken...
前言 前面已经写了两篇关于docker的博文了,在工作中有关docker的基本操作已经基本讲解完了.相信现在大家已经能够熟练配置docker以及使用docker来创建镜像以及容器了.本篇博客将会讲解如 ...
- git rebase(变基)操作演示
1.rebase(变基)操作 注意事项:rebase 改变分支的根源,绝对不要在与其他人共享的分支上进行操作rebase黄金法则:绝不要在公共的分支上使用它! 1.1git merge 与 git r ...
- ums网管应用unix系统的常用操作 (五)--iteye技术网站
ums网管应用unix系统的常用操作 (五)--iteye技术网站 2011年04月01日 10, 设置sybase最大连接数为1024,需要预先做好以下设置 a, 在/etc/system文件末尾添 ...
- JavaWEB笔记13 jQuery介绍及常用操作
JavaWEB笔记13 jQuery介绍及常用操作 文章目录 JavaWEB笔记13 jQuery介绍及常用操作 一.jQuery简介: 1.jQuery介绍: 2.jQuery书写风格: 二.jQu ...
- Git系列:常用操作一指禅
Git操作一指禅 远程建仓,本地拉取代码 代码提交 版本回退 其他操作 扩展参考 Git系列博客: Git系列:GitHub建仓及远端同步步骤总结,link Git系列:入门必备指令详解,link G ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken
项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个 ...
- Docker之使用Dockerfile创建定制化镜像(四)--技术流ken
前言 在之前的博客<Docker端口映射及创建镜像演示(二)--技术流ken>,演示了如何使用一个现有容器创建一个镜像,以及镜像在阿里云的上传和下载. 但是这样的镜像有很大的局限性,不能根 ...
- 五分钟彻底学会iptables防火墙--技术流ken
iptables简介 IPTABLES 是与最新的 3.5 版本 Linux内核集成的 IP 信息包过滤系统.如果 Linux 系统连接到因特网或 LAN.服务器或连接 LAN 和因特网的代理服务器, ...
最新文章
- 浅谈C#中常见的委托Func,Action,Predicate(转)
- 【bzoj1486】[HNOI2009]最小圈 分数规划+Spfa
- js中的apply()、call() 和 bind()
- Model和ViewModel
- 均值滤波、中值滤波、混合中值滤波C++源码实例
- aws 删除ec2实例_如何在AWS中启动EC2实例
- c++ 反射_固体火箭发动机黏接壳体超声C扫描检测系统研制与应用
- 在 Windows Azure 上部署预配置 Oracle VM
- 计算机在材料科学与工程中的应用,计算机在材料科学与工程中的应用
- web前端基础(06css)
- linux下文件时间戳
- B/S系统间跨域单点登录设计思路
- Android键盘映射
- esp8266 python 74hc595_十九 ,ESP32 74HC595 的使用
- PAT --- 1068.万绿丛中一点红 (20 分)
- Oracle11g的安装及删除
- A+B的各种写法(不是couta+b;)
- django html 插入网页背景图片
- 基于java的Android手机通讯录【详细】【完整代码】
- 中文分词-转载3_一个北京程序员