文章目录:
前言:
本文章是讲解Git的相关操作的,深刻理解Git的操作过程与操作,掌握Git企业级的应用,从0开始讲解Git。
文章正式开始:
首先在讲解什么是Git之前我们先来聊一聊关于我们工作中的一个场景:
我们日常在工作的时候我们的老板可能让我们写一个需求文档(文档1),而当我们写完文档1之后我们可能就将这个文档1交给老板,可是我们的老板对我们的文档1不是怎么很满意觉得我们的文档缺了一点什么,于是让我们将这个文档拿下去进行修改,于是我们就拿着文件去进行修改了,此时我们将文档2给修改出来了,又将这个文档交给老板,老板可能觉得还是对这个文件不是很满意,于是又让我们去修改文档.......,假设最终我们修改到了第10版文档,可是老板觉得我们的第5份文档是最满足他的需求的,于是我们就去寻找文档5,如果我们之前没保存文档5那我们的内心是非常崩溃的,因为我们已经修改文档很多次了并不知道文档5是什么内容了,但是我们如果修改的并不是同一份文件而是每次修改的时候都是新建一个副本文档进行修改,那么我们就开开心心的拿着第5份文档交给老板。
从上面的工作场景不难发现我们修改文件的时候由两种方式一种是在同一份文件进行多次修改,另外一种情况就是对要修改文件的副本文件进行修改,显然第二种情况是比较好的修改方式,因为这种修改方式可以让我们找到我们每次修改文件的版本。
而为了对我们的文件进行管理于是就有了git这个主流的版本管理控制器之一。
所以我们可以将Git简单的理解为:对文件进行管理的版本控制系统,能够帮我们知道这个文件的各个版本以及里面的内容。这里的文件可以是任何格式的文件,而对于开发者来说git最大的作用就是用来管理我们的源代码的。
1:首先在我们的centos系统下我们需要安装Git
命令:
root用户:yum install -y git
普通用户:sudo yum install -y git
创建git仓库
首先要注意的是我们的创建仓库一定是在一个目录下进行创建的
创建一个git仓库:git init
配置仓库
git config user.name "xxxxx"
git config user.email "xxxxx"
首先在配置名字和邮箱之前我们可以查看一下git有无配置这两个,如果配置了我们就可以不进行配置,一般而言如果我们是刚开始建立git仓库都需要进行配置。
查看git的配置项指令: git config -l
所以我们来配置name与email
我们还可以加一个 --global的选项来进行配置这两个如:
git config --global user.name " "
git config --global user.email " "
是否加 --global看自己的意愿。
配置项的删除
假设我们的配置项不小心配置错了或者我们需要对一个git仓库的配置项进行修改那么我们就可以使用以下的指令:
git config --unset user.name(user.email) 对于局部配置
git config --global --unset user.name(user.email) 对于全局的配置
其实我们的git真正管理的是位于版本库中的文件,但是在git仓库目录的文件还不能被git进行管理,而需将他添加到git的版本库中才能进行管理。
我们通过上面的图形来介绍几个概念
工作区:.git文件的同级路径下的区域,简单的理解就是我们在写代码的区域。
暂存区:属于.git版本库中一个非常重要的内容,我们将工作区的内容通过add指令之后文件就会被放在该区域。
git的版本库:就是我们的.git目录。
HEAD:本质是一个指针用来指向我们当前是在那个分支下。
master:本质里面存的是commit id
object对象库:当我们对工作区进行修改的时候,我们修改的内容会被存储在object对象库中。
.git文件中就有上述的一些区域。
在上面我们已经对于git的区域有一定的了解了,那么我们也就可以引入两个指令了。
git add . or git add filename
首先这个命令是针对于工作区与暂存区进行的命令。
意义是:将我们工作区修改的内容添加到暂存区。
“修改“:并不是局限于对文件的修改还包括删除和创建文件
git add . 与git add filename的区别
add . :表示将工作区所有的修改添加到暂存区中。
add filename: 将该文件的修改添加到暂存区中。
如我们先使用上述命令来进行相关的操作:
git status
这个指令可以用来查看我们当前三个工作区的状态
git commit -m ” xxxx“ ”“分号里面建议认真的写本次做了什么操作
这个指令可以用来查看我们提交到版本库中的日志
还可以使用 简单漂亮的打印指令
git log --pretty=oneline
.git其实是树目录里面有许多文件或目录,我们在linux下使用tree命令来查看
index:也就是我们所说的暂存区,里面存着的是add 修改的内容
HEAD:也就是我们所说的指针,里面存着的是我们指向的分支
object:称为对象库,里面存着的是我们我们每次对工作区进行修改的内容的索引
master:其实就是我们最新一次的commit id,我们可以来看看。
我们知道git是版本控制管理系统,所以git最重要管理的是修改并非是文件。
我们先引入几个场景
1.只是修改了文件的内容,无add。
这种情况下我们git如果想要知道本次文件的内容与上次该文件内容的差异我们呢一个如何进行查看呢??
当然这种差异我们可能可以通过我们的记忆知道两个文件的区别,可是当我们时间一久那我们还会记住吗??
所以我们的git提供了一个指令用来显示工作区与暂存区的区别
git diff filename
我们通过图片来进行演示。
场景2:修改的文件已经add了,想要查看文件在暂存区与版本库中的差别
git diff HEAD -- filename
此时暂存区与版本库的差异就出来了。
我们知道我们的git有一个重要的功能就是对文件进行版本管理,所以版本回退是git的一个非常重要的知识。
版本回退经常用于,我们假如已经开发了一段时间了,可是我们对我们的开发结果不是怎么很想要了,并且想要在上一个版本下重新进行开发,那么这时我们的版本回退的操作就非常需要了。
版本回退语法:git reset [--soft] [--mixed] [--hard] commitid [HEAD]
commitid:就是我们用git log打印时commit 后面的那些数字,当然commitid 也可以是HEAD,表示的是当前版本。
回退的本质:将版本库的内容进行回退,其他区域回不回退需要看选项回退。
我们结合图来进行解释具体的选项的意思。
--soft:只回退版本库中的内容。
--mixed:版本库和暂存区都会回退,也是git reset的默认选项。
--hard:将所有区域的内容都进行回退,要慎用。
此时假设我们已经开发了一次,备注了“coding x function”
且文件中的内容为:
我们不想要这一次的结果了,我们想回到上一个版本。
此时就可以使用git提供的版本回退功能了。
此时的test的内容
这样就将工作区,暂存区,版本库中的内容全部回归到上一个版本了。
从这里我们也能发现git的版本回退是非常快速的,这是因为回退其实就是将HEAD指针的master修改就行,所以修改速度非常快。
git reflog 可以查看我们所有的commit id,这样导致了我们可以随便回归到那个版本。
但是不建议随便乱回退,可能commit id会被冲掉。
我们通过图来讲解git版本回退时本质的内容
这里的撤销修改指的是我们在对一个文件进行操作的时候所对应的操作,也就是觉得我们本次开发的代码非常不好,想回到开始时候的状态。
1:对工作区的代码的撤销,无add
方法1:自己手动修改。这种方法太挫了,这里就不进行演示了。
方法2:git checkout -- [filename],回到最近一次的add状态与commit状态。
2.已经进行了 add 操作,但没有commit操作
方法:git reset HEAD filename +git checkout -- [filename] 两步走
3.已经add,已经commit了
这时候的撤销我们只能依靠我们的git reset --hard/mixed/soft commitid 了,版本回退。
这里就不给大家进行演示了。
命令:git rm filename
我们通过具体的实例来讲解git rm
我们先创建file1,file2,file3,然后将他们删除。
此时使用git status来进行查看内容
我们在只需 git commit 操作就能将文件给彻底删除了。
总结使用git rm删除版本库中的文件的两步: git rm filename +git commit -m " xxx"
如何恢复我们在工作区所不小心删除的文件呢?
这里就可以使用撤销操作了,因为删除本质上也是修改。
本篇文章完!!!!感谢大家的耐心观看。
还有的内容将会在后面的文章中进行介绍,如果你觉得对你有用的话可以给个赞。