【Git原理与使用】 | 您所在的位置:网站首页 › 休眠仓的原理 › 【Git原理与使用】 |
目录 Git·版本控制器的引入 版本控制器 Git安装(已安装可以跳过) Linux-centos Linux-ubuntu Git基本操作 创建Git本地仓库 配置 Git 认识工作区、暂存区、版本库 工作区、版本库 stage暂存区 工作区内容使用Git管理 Git·版本控制器的引入 #:引入问题 在学习或工作中,时常需要编写各种文档时,而导师或老板的要求时常会导致多次的修改 (多版本的修订) ,然而导师或老板最终需要的却是前面的版本, 于是:为了防止文档丢失或能恢复到原来的版本,不得不复制出一个副本。 报告 - 初步版 报告 - 修订一版 报告 - 修订二版 …… 报告 - 确定版 以此对多个版本进行管理,便于 "版本的回退" 。这个方法是可以的,但是也是有问题的,当版本到达一定数量的时候,如果要求的是回到 "添加了什么什么功能的修订版" 的时候,是很困难的。 缺陷: 随着版本的不断增多,维护好版本是很有挑战的。无法得知版本修改的内容是什么。 版本控制器 于是为了我们能够更方便管理这些不同版本的文件,便有了大佬们设计的 "版本控制器" 。 所谓的版本控制器:就是能让我们了解到一个文件的历史,以及它的发展过程的系统。通俗的讲就是 一个可以记录工程的每一次改动和版本迭代的⼀个管理系统 ,同时也方便多人协同作业。 目前最主流的版本控制器就是 Git 。 Git 可以控制电脑上所有格式的文件 ,例如 doc、excel、dwg、dgn、rvt等等。对于我们开发人员来说,Git 最重要的就是可以帮助我们管理软件开发项⽬中的源代码文件。#注意: 还需要再明确⼀点,所有的版本控制系统,Git 也不例外,其实 只能跟踪文本文件的改动 ,比如 TXT 文件、网页,所有的程序代码等等。版本控制系统可以告诉你每次的改动,比如:在第5行加了⼀个单词 "Linux" ,在第8行删了⼀个单词 "Windows"。 而图片、视频这些⼆进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把⼆进制文件每次改动串起来,也就是只知道图⽚从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。 Git安装(已安装可以跳过) Git 是开放源代码的代码托管工具,最早是在Linux下开发的。开始也只能应用于Linux平台,后面慢慢的被移植到windows下,现在,Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。 Linux-centos $ git --version作用查看当前设备安装的 git 版本,也可以用于查看当前设备是否已安装git。 上图,为未安装git。 $ sudo yum install git -y利用yum安装git。 安装成功便可以查到。 Linux-ubuntu $ git --version作用查看当前设备安装的 git 版本,也可以用于查看当前设备是否已安装git。 上图,为未安装git。 $ sudo apt-get install git -y安装git。 可以使用 tree 查看该目录下的文件: [qcr@ecs-205826 project]$ tree .git .git ├── branches ├── config ├── description ├── HEAD ├── hooks │?? ├── applypatch-msg.sample │?? ├── commit-msg.sample │?? ├── post-update.sample │?? ├── pre-applypatch.sample │?? ├── pre-commit.sample │?? ├── prepare-commit-msg.sample │?? ├── pre-push.sample │?? ├── pre-rebase.sample │?? └── update.sample ├── info │?? └── exclude ├── objects │?? ├── info │?? └── pack └── refs ├── heads └── tags 9 directories, 13 files 对于内部的内容,此文不讲解,只需要知道,.git隐藏目录是用来追踪、管理我们对应的仓库的,千万不要手动的去修改里面的任何内容,一旦改乱了,是会直接把这个git厂库给破坏掉的。 配置 Git当安装 Git 后首先要做的事情是设置我们的 用户名称 和 e-mail 地址,这是非常重要的。如果不配置这两个配置项,将来我们在对本地厂库进行操作的时候,就可能会出现一系列的问题。 git config 命令,为git厂库设置一些配置项。 $ git config [--global] user.name "Your Name" $ git config [--global] user.email "[email protected]" # 把 Your Name 改成自己对应的昵称 # 把 [email protected] 改成邮箱的格式,只要格式正确即可 其中 --global 是一个可选项。如果使用了该选项,表示这台机器上所有的 Git 仓库都会使用这个配置。如果希望在不同仓库中使用不同的 name 或 e-mail ,可以不要 --global 选项,但要 注意的是,执行命令时必须要在仓库⾥。 查看配置命令为: $ git config -l删除配置命令为: $ git config [--global] --unset user.name $ git config [--global] --unset user.email其中 --unset ,表示重置某一个配置。执行后便可以发现没有了 user.name 与 user.email。 Note:使用--global 新增的配置,不能直接使 --unset 进行重置,需要加上--global 才能重置。 认识工作区、暂存区、版本库 工作区、版本库#问:直接在我们之前所创建的目录下创建一个文件 Git 能否进行管理?
是不能的!该文件所在的目录(project)并不是本地仓库,真正的本地厂库是隐藏的 .git 。而仓库又可以称作为版本库。 但是,又是不允许在.git 中手动的进行任何的修改,所以只能将文件写在 project 目录之下。Git 并将该目录称作为 git 的工作区。 工作区:是在电脑上我们要写代码或文件的目录版本库:又名仓库,英文名 repository,工作区有一个隐藏目录 .git ,它不算工作区,而是 Git 的版本库。这个版本库里面的所有文件都可以被 Git 管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以 "还原"Note:.git 虽然在写代码或文件的目录下,但是其是不属于工作区的 #:Git可以对文件进行版本控制 - 体现 在版本库中其实还有一个模块:对象库(objects)。 里面存储了一堆的 git对象 ,这些git对象是当我们在进行 git add 新增工作区修改的时候,会将具体的修改内容,都会存到一个新的git对象中,并将这个新的git对象维护到git的对象库里面。以此所有的工作区的内容修改都会被存储到一个git对象中,以此维护管理文件的所有的版本。 #:暂存区 可以发现暂存区中是一个树状结构,其里面存的不是一个一个的对象,它存的是一个个修改内容的git对象的索引,所以暂存区是轻量级的。 所以git commit ,是将暂存区中的树写到master分支下,所以master分支下和暂存区一样存的不是对象,而是一个个的索引。所以现在我们只要能拿到对应的HEAD(指针),就能拿到master这颗索引树,然后就能根据索引拿到某一个文件的具体修改的内容,拿到对应的具体的修改内容,就可以管控一个文件了。 |
CopyRight 2018-2019 实验室设备网 版权所有 |