【Git原理与使用】-- 初步认识

news2024/10/7 10:12:57

目录

Git·版本控制器的引入

版本控制器 

Git安装(已安装可以跳过)

Linux-centos

Linux-ubuntu

Git基本操作

创建Git本地仓库

配置 Git

认识工作区、暂存区、版本库

工作区、版本库

stage暂存区

工作区内容使用Git管理


Git·版本控制器的引入

#:引入问题
        在学习或工作中,时常需要编写各种文档时,而导师或老板的要求时常会导致多次的修改 (多版本的修订) ,然而导师或老板最终需要的却是前面的版本, 于是:为了防止文档丢失或能恢复到原来的版本,不得不复制出一个副本
  • 报告 - 初步版
  • 报告 - 修订一版
  • 报告 - 修订二版
  • ……
  • 报告 - 确定版
        以此对多个版本进行管理,便于 "版本的回退" 。这个方法是可以的,但是也是有问题的,当版本到达一定数量的时候,如果要求的是回到 "添加了什么什么功能的修订版" 的时候,是很困难的。
缺陷:
  1. 随着版本的不断增多,维护好版本是很有挑战的。
  2. 无法得知版本修改的内容是什么。

版本控制器 

        于是为了我们能够更方便管理这些不同版本的文件,便有了大佬们设计的 "版本控制器"  
        所谓的版本控制器:就是能让我们了解到一个文件的历史,以及它的发展过程的系统。通俗的讲就是 一个可以记录工程的每一次改动和版本迭代的⼀个管理系统 ,同时也方便多人协同作业。
        目前最主流的版本控制器就是 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。

Git基本操作

创建Git本地仓库

        仓库是进行版本控制的⼀个文件目录。我们要想对文件进行版本控制,就必须先创建
⼀个仓库出来。 创建⼀个 Git 本地仓库对应的命令为 git init 注意:命令要在文件目录下执行

        可以发现其在该目录下创建了一个隐藏目录:  .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@example.com" 

# 把 Your Name 改成自己对应的昵称
# 把 email@example.com 改成邮箱的格式,只要格式正确即可
         其中 --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都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以 "还原" 

  • 图中左侧为工作区右侧为版本库
  • 在创建 Git 版本库时,Git 会为我们自动创建⼀个唯⼀的 master 分支,以及指向 master 的⼀个指针叫 HEAD

Note:.git 虽然在写代码或文件的目录下,但是其是不属于工作区的

stage暂存区

  • 暂存区:英文叫 stage 或 index。⼀般存放在 .git 目录下的 index ⽂件(.git/index)中,我们把暂存区有时也叫作索引(index)。

工作区内容使用Git管理

  • 当对工作区修改(或新增)的文件执行 git add 命令。其会将工作区中所有的修改内容,添加进版本库的暂存区中。
  • 当执行提交操作 git commit 时,master 分支会做相应的更新,可以简单理解为暂存区的目录树才会被真正写到版本库中。

#:Git可以对文件进行版本控制 - 体现

        在版本库中其实还有一个模块:对象库(objects)

        里面存储了一堆的 git对象 ,这些git对象是当我们在进行 git add 新增工作区修改的时候,会将具体的修改内容,都会存到一个新的git对象中,并将这个新的git对象维护到git的对象库里面。以此所有的工作区的内容修改都会被存储到一个git对象中,以此维护管理文件的所有的版本。

#:暂存区

        可以发现暂存区中是一个树状结构,其里面存的不是一个一个的对象,它存的是一个个修改内容的git对象的索引,所以暂存区是轻量级的。

        所以git commit ,是将暂存区中的树写到master分支下,所以master分支下和暂存区一样存的不是对象,而是一个个的索引。所以现在我们只要能拿到对应的HEAD(指针),就能拿到master这颗索引树,然后就能根据索引拿到某一个文件的具体修改的内容,拿到对应的具体的修改内容,就可以管控一个文件了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/650316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4端到端协议-4.3【实验】【计算机网络】

4端到端协议-4.3【实验】【计算机网络】 前言推荐4端到端协议4.2 TCP协议流捕获与TCP协议分析4.3 TCP连接管理实验目的实验内容及实验环境实验原理TCP连接管理的三个阶段TCP的连接建立TCP连接建立时的各状态TCP的数据传输TCP 的连接释放为什么A 必须等待 2MSL 的时间&#xff1…

京东到家机器学习平台建设

目录 前言 机器学习平台总体架构 模型训练平台 特征模型管理平台 在线模型预测服务 算法应用实践 总结和展望 1. 前言 京东到家作为行业领先的即时零售平台,一直把为消费者提供快捷便利高效高质量的即时零售服务作为自己的责任。到家算法团队作为支持京东到家各个…

Linux服务第一章:web基础与http协议

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、DNS与域名1.什么是域名?2.域名注册2.1阿里云域名申请流程 3.DNS解析 二、网页的概念1.网页(HTTP/HTTPS)的基本概念2.HTML概述…

【python】flask+pymysql 实现Web端操作数据库!

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。 Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用…

Modbus协议基于modscan 的设备数据收发过程模拟

Modbus协议基于modscan 的设备数据收发过程模拟 一、基本介绍二、工具使用说明2.1 Modsim32的使用 - 模拟从设备 - 生成设备数据2.1.1 新建虚拟设备 - modsim文件2.1.2 打开虚拟设备 - modsim文件2.1.3 连接设置2.1.3.1 modbus /tcp连接2.1.3.2 COM连接 2.1.4 配置 - 设置数据自…

python 加速(1)

文章目录 简单步骤像Python一样做torch 的一切安装Cmake安装 Torch (GPU)CMakeLists.txt试用小样设置 CLion 环境 Cuda配置VS C 环境建上手的文件step1: interpolation.cppstep2: interpolation_kernel.custep3: include/ utils.hstep4: setup.pystep5: …

FPGA_学习_08_有限状态机

状态机是FPGA编程必学内容之一,因为状态机在项目用的特别多。 那为什么状态机这么重要呢? 在写这篇blog之前,搜到CSDN一位大佬的博客,有一句话令我醍醐灌顶: “FPGA不同于CPU的一点特点就是CPU是顺序执行的&#xff0c…

操作系统页面置换算法详解(OPT算法、FIFO算法、LRU算法解释+缺页数计算)

名人说:一花独放不是春,百花齐放花满园。——《增广贤文》 作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 〇、页面置换算法是什么?一、OPT算法1、算法介绍2、举例二、FIFO算法1、…

【嵌入式模型转换】算能盒子SE5 芯片板子BM1684

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1.环境准备2. 开发机安装环境 前言 官网文档指引:https://doc.sophgo.com/sdk-docs/v23.03.01/docs_latest_release/docs/SophonSDK_doc/zh/html/c…

ffmpeg capture decklink

确保decklink设备已经接入 lspci | grep Blackm02:00.0 Multimedia video controller: Blackmagic Design DeckLink SDI Micro 确保decklink驱动已经正确安装 lsmod | grep blackmagicblackmagic_io 2068480 2 确保ffmpeg已经启用decklink,如何配置之前的博文已经…

高磁场型霍尔效应测试系统

高磁场型霍尔效应测试系统由:电磁铁、电磁铁电源、高精度恒流源高精度电压表、高斯计、霍尔效应样品支架、标准样品、系统软件。用于测量半导体材料的载流子浓度、迁移率、电阻率、霍尔系数等重要参数,而这些参数是了解半导体材料电学特性必须预先掌控的…

conda下jupyter lab 多kernel

1.安装ipykernel pip install ipykernel2.手动添加 --kernel python -m ipykernel install --name tensorflow --display-name "tensroflow"3. 查看创建的kernel jupyter kernelspec list4. 修改配置文件kernel.json,使得已创建的kernel匹配 5. 修改配…

【Axure教程】根据标签数自动调整尺寸的多选下拉列表

​多选下拉列表常用于需要用户从一组选项中选择多个选项的情况。它提供了一个下拉菜单,用户可以点击展开并选择他们感兴趣的多个选项。多选下拉列表可以用于展示可选标签,并允许用户选择多个标签。例如,在一个博客发布界面上,可以…

【Flutter】如何在 Flutter 中获取设备 ID

文章目录 一、 前言二、 设备 ID 的重要性1. 什么是设备 ID2. 设备 ID 的作用 三、 在 Flutter 中获取设备 ID1. 需要的工具和库2. 简单代码示例3. 完整可以运行的代码 四、 注意事项1. 权限问题2. 设备兼容性问题 五、 总结 一、 前言 在移动应用开发中,有时我们需…

飞书小程序开发教程——获取app_access_token

前言 最近在玩飞书小程序,真是受够了某信的小程序,一坨坨的限制加恶心人的手段。体验了飞书加飞书文档的功能真的还是飞书好用,又可以定制机器人啥的真方便。 但是飞书除了开发者文档真没啥资料,估计没啥人写吧…本专栏后续就慢慢…

DVPP媒体数据处理视频编码问题案例

DVPP(Digital Vision Pre-Processing)是昇腾AI处理器内置的图像处理单元,通过AscendCL媒体数据处理接口提供强大的媒体处理硬加速能力,主要功能包括图像编解码、视频编解码、图像抠图缩放等。 本期就分享几个关于DVPP视频编码问题…

未磁科技全球首台64通道无液氦心磁图仪及首个培训基地落户北京安贞医院

【全球首台64通道无液氦心磁图仪在北京安贞医院举行开机仪式】 近日,在北京安贞医院举行了未磁科技全球首台64通道无液氦心磁图仪开机仪式,中国医学装备协会赵自林理事长、北京安贞医院纪智礼书记、张宏家院长、宋现涛教授,以及未磁科技蔡宾…

【离散化+枚举】代码源每日一题div2 全部相等

全部相等 - 题目 - Daimayuan Online Judge 题意: 思路: 首先,子序列最长,想到了DP,但是子序列DP,D不出来,所以要放弃想法 不难发现,这道题和顺序没有关系,所以可以说…

Vision Pro,难成初代iPhone

“一个全新的增强显示平台,一个革命性的新产品”,这是苹果CEO库克给Apple Vision Pro的评价。 当苹果拿出Vision Pro时,想必整个科技行业都感到震惊。这不仅是因为苹果时隔十六年后,再次在WWDC带来“革命性产品”,更是…

Ai 赋能|这 6 款免安装的工具,功能超神~

今天小呆给小伙伴们分享几款小巧好用的工具,功能非常实用,而且全都免费,值得大家使用! 1、Pix Fix 修复画质损坏的图像 Pix Fix 是一个免费的线上图片工具,可以对过度压缩造成损毁的图片以算法为基础进行噪点的修复&…