做网站如何通过流量赚钱,爱情树表白网页在线制作,设计平台图片,wordpress 加载太多js目录
Git初始
Git安装
Git基本操作
创建git本地仓库
配置git
工作区,暂存区,版本库
添加文件,提交文件
查看.git文件
修改文件
版本回退
小结 Git初始
git是一个非常强大的版本控制工具.可以快速的将我们的文档和代码等进行版本管理.
下面这个实例看理解下为什么需…目录
Git初始
Git安装
Git基本操作
创建git本地仓库
配置git
工作区,暂存区,版本库
添加文件,提交文件
查看.git文件
修改文件
版本回退
小结 Git初始
git是一个非常强大的版本控制工具.可以快速的将我们的文档和代码等进行版本管理.
下面这个实例看理解下为什么需要版本控制 在工作或者学习中,我们可能经常会遇到这样的场景,例如当我们需要给领导提供一份资料的时候,我们先写出了一个版本,交给领导,但是领导看完不满意,让重新写,于是我们又写了第二个版本,领导还是不满意,于是又写了第三个版本,领导看完之后说还不如第二个版本的文档,于是就要第二个版本的文档. 这种情况下我们想要恢复到第二个版本的文档是不是就比较麻烦了.
但是如果我们将文档交给git进行管理之后,那个问题就不在是问题了.
对于Git这个工具,不管是在企业中还是学习中,适用频率都是很高的一个工具,在企业中我们需要合作开发项目,那么合作完成项目,git是必不可少的一个工具.
Git安装
工欲善其事必先利其器,接下来我们先安装git.
我们安装git环境是在CentOs.
后续的操作也是在CentOS上进行操作.
由于我们的系统上是没有git的,我们需要安装git.
在没有安装git之前,我们在控制台上输入git之后,会出现这样的场景:
git
-bash: git: command not found上述情况只是系统提示我们没有安装git.
其实在linux上安装git非常简单,只需要一个命令即可: yum -y install git
当操作这个命令之后,我们可以在控制台输入 git --version来查看我们安装的版本. 目前为止我们的git已经安装完成了.可以看出git的安装是非常简单的,可以说是傻瓜式安装. Git基本操作
接下来我们将介绍git的一些基本操作.这些基本操作一般使用频率最高.
创建git本地仓库 上述图片中的命令就是在我们本地创建一个新的git仓库.
git init 命令就是创建本地仓库的命令.
当我们创建完成之后,我们在当前仓库发现了一个.git的隐藏目录.这个目录就是用来管理这个仓库下的所有东西的.
以下就是.git目录下的所有东西. 关于这个.git目录中的东西我们在后面会详细进行介绍.
配置git
接下来就需要对git进行配置,这个配置是非常重要的,主要就是配置用户名和email地址,这个配置用来区分是那个用户进行提交的.
配置命令:
git config user.name Your Name
git config user.email emailexample.com 需要把user.name和user.email 换成自己的即可.
可以使用git config -l进行查看
--global 是⼀个可选项。如果使⽤了该选项表⽰这台机器上所有的 Git 仓库都会使⽤这个 配置。如果你希望在不同仓库中使⽤不同的 name 或 e-mail 可以不要 --global 选项但要 注意的是执⾏命令时必须要在仓库⾥。
删除对应的配置命令:
git config --unset user.namegit config --unset user.email
如果需要删除全局的配置,只需要将 --global选项即可. 工作区,暂存区,版本库
工作区:工作区就是在git仓库下进行编写代码和文档的地方.
暂存区:英⽂叫 stage 或 index。⼀般存放在 .git ⽬录下的 index ⽂件.git/index中我们 把暂存区有时也叫作索引index。
版本库:⼜名仓库英⽂名 repository 。⼯作区有⼀个隐藏⽬录 .git 它不算⼯作区⽽ 是 Git 的版本库。这个版本库⾥⾯的所有⽂件都可以被 Git 管理起来每个⽂件的修改、删除Git 都能跟踪以便任何时刻都可以追踪历史或者在将来某个时刻可以“还原”。 图中左侧为⼯作区右侧为版本库。
Git 的版本库⾥存了很多东西其中最重要的就是暂存区。
在创建 Git 版本库时Git 会为我们⾃动创建⼀个唯⼀的 master 分⽀以及指向 master 的⼀个指 针叫 HEAD。分⽀和HEAD的概念后⾯再说
当对⼯作区修改或新增的⽂件执⾏ git add 命令时暂存区⽬录树的⽂件索引会被更新。
当执⾏提交操作 git commit 时master 分⽀会做相应的更新可以简单理解为暂存区的⽬录树才会被真正写到版本库中。
由上述描述我们便能得知通过新建或粘贴进⽬录的⽂件并不能称之为向仓库中新增⽂件⽽只是在⼯作区新增了⽂件。必须要通过使⽤ git add 和 git commit 命令才能将⽂件添加到仓库中 进⾏管理
添加文件,提交文件
我们在包含.git目录的下新建一个文件,我们可以使用git add 命令将工作区的文件添加到暂存区.
添加一个或多个文件到暂存区 git add [file1] [file2] ...添加一个目录到暂存区 git add [dir]添加当前目录下所用改动的文件到暂存区 git add
再使用git commit命令将暂存区中的文件提交的本地仓库中.
提交暂存区全部内容到本地仓库中: git commit -m message 提交暂存区的指定⽂件到仓库区 git commit [file1] [file2] ... -m message
注意:git commit -m选项要跟上这次提交的描述信息.这个不能缺少.用来记录你提交的细节,要好好描述.
[rootVM-8-9-centos TestGit]# git init
初始化空的 Git 版本库于 /root/TestGit/.git/
[rootVM-8-9-centos TestGit]# ls -a
. .. .git
[rootVM-8-9-centos TestGit]# touch 1.txt
[rootVM-8-9-centos TestGit]# touch 2.txt 3.txt
[rootVM-8-9-centos TestGit]# ls
1.txt 2.txt 3.txt
[rootVM-8-9-centos TestGit]# git add 1.txt
[rootVM-8-9-centos TestGit]# git add 2.txt 3.txt
[rootVM-8-9-centos TestGit]# git commit 1.txt -m 提交一个文件
[master根提交 da0d6e8] 提交一个文件1 file changed, 0 insertions(), 0 deletions(-)create mode 100644 1.txt
[rootVM-8-9-centos TestGit]# git commit -m 将暂存区中所有文件都提交
[master 890a29d] 将暂存区中所有文件都提交2 files changed, 0 insertions(), 0 deletions(-)create mode 100644 2.txtcreate mode 100644 3.txt
[rootVM-8-9-centos TestGit]# ^C
[rootVM-8-9-centos TestGit]# 此时我们可以使用git log命令来查看提交记录: 该命令显示的是从进到远的日志. 如果嫌输出信息太多看得眼花缭乱的可以试试加上 --prettyoneline 参数 我们发现在上面都会有一些数字比如890a29.................,这个数字的话是我们每次进行提交的commit Id(版本号),git的commit id是通过一系列计算出来的16进制的数字.
要搞明白这些数字的含义,就需要进入.git目录.
查看.git文件 index就是暂存区,我们进行add的文件和代码都是在这个目录下HEAD就是我们默认指向的master分支的指针 其实所谓的master分支就是: 可以看到master分支打印 了一串数字,其实这个数字就是我们最近提交的commit id
我们可以通过打印日志来看看:
[rootVM-8-9-centos TestGit]# git log --prettyoneline
890a29d9bdb4b08ce1a6c62cb2f9686ca9c0e451 将暂存区中所有文件都提交
da0d6e8dbbda2503b782b862bb1d332dc2a6a5a1 提交一个文件
[rootVM-8-9-centos TestGit]# 可以看到完全一致.也就是说我们现在是将文档提交到master分支上的.
objects 为 Git 的对象库⾥⾯包含了创建的各种版本库对象及内容
当执⾏ git add 命令 时暂存区的⽬录树被更新同时⼯作区修改或新增的⽂件内容被写⼊到对象库中的⼀个新的对象中就位于 .git/objects ⽬录下让我们来看看这些对象有何⽤处. 我们发现里面有很多的目录,查找 object 时要将 commit id 分成2部分其前2位是⽂件夹名称后38位是⽂件名称。 找到这个⽂件之后⼀般不能直接看到⾥⾯是什么该类⽂件是经过 sha 安全哈希算法加密过的 ⽂件好在我们可以使⽤ git cat-file 命令来查看版本库对象的内容 我们所有对本地仓库目录下的所有操作,都会被git记录下来,也就是在objects目录下,这里记录了所有对本地仓库的操作.
修改文件
Git ⽐其他版本控制系统设计得优秀因为 Git 跟踪并管理的是修改⽽⾮⽂件。
什么是修改⽐如你新增了⼀⾏这就是⼀个修改删除了⼀⾏也是⼀个修改更改了某些字符 也是⼀个修改删了⼀些⼜加了⼀些也是⼀个修改甚⾄创建⼀个新⽂件也算⼀个修改。
我们可以将我们前面提交的文件进行修改, 我们使用vim 1.txt打开文件,在里面写入hello world,然后保存退出.
此时,仓库中的1.txt文件和我们工作区的1.txt文件是不同的.我们可以使用git status命令查看在你上次提交之后是否有对⽂件进⾏再次修改 上述结果已经告诉我们了,1.txt已经被修改,但是还没有进行添加和提交.
此时我们是知道1.txt文件已经被修改了,但是并不知道修改了那些内容.我们可以使用命令:
git diff 1.txt 来查看修改了那些内容. 这里我们就能看到我们添加了一行hello world .
当我们知道我们修改了那些内容的时候,我们就可以进行添加和提交操作了. 当我们进行了add 之后再次查看的时候,就会发现他会提示你要提交的变更是那个了.然后我们进行提交就可以了. 版本回退
之前我们也提到过Git 能够管理⽂件的历史版本这也是版本控制器重要的能⼒。如果有⼀天你发现 之前前的⼯作做的出现了很⼤的问题需要在某个特定的历史版本重新开始这个时候就需要版本回退的功能了。
执⾏ git reset 命令⽤于回退版本可以指定退回某⼀次提交的版本。
要解释⼀下“回退”本质是 要将版本库中的内容进⾏回退⼯作区或暂存区是否回退由命令参数决定
git reset 命令语法格式为 git reset [--soft | --mixed | --hard] [HEAD] --mixed 为默认选项使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内 容⼯作区⽂件保持不变。 --soft 参数对于⼯作区和暂存区的内容都不变只是将版本库回退到某个指定版本。 --hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命 令因为⼯作区会回滚你没有提交的代码就再也找不回了所以使⽤该参数前⼀定要慎重。 HEAD 说明
可直接写成 commit id表⽰指定退回的版本
HEAD 表⽰当前版本
HEAD^ 上⼀个版本
HEAD^^ 上上⼀个版本
以此类推...
可以使⽤ 〜数字表⽰
HEAD~0 表⽰当前版本
HEAD~1 上⼀个版本
HEAD^2 上上⼀个版本
以此类推..
为了方便测试,我们对1.txt文件进行三次修改 添加 和提交操作.
第一次:
第二次: 第三次: 查看历史的提交记录: 现在如果我们在提交完 version3 后 发现 version 3 编写错误想回退到 version2重新基于 version 2 开始编写。由于我们在这⾥希望的是将⼯作区的内容也回退到 version 2 版本所以需 要⽤到 --hard 参数⽰例如下 我们这里的回退是直接的commit Id进行回退的.
现在我们发现工作区的1.txt文件已经回退到了version2的版本了.同时也发现head已经指向了version2了 值得说的是Git 的版本回退速度⾮常快因为 Git 在内部有个指向当前分⽀此处是master的 HEAD 指针 refs/heads/master ⽂件⾥保存当前 master 分⽀的最新 commit id 。当我们 在回退版本的时候Git 仅仅是给 refs/heads/master 中存储⼀个特定的version可以简单理解 成如下⽰意图 小结
本篇文章为git的基础篇,后续会持续更新git的其他操作以及高级的特性.