Git 基本操作 ⼯作区、暂存区、版本库

创建本地仓库:

        创建 Git 本地仓库

        要提前说的是,仓库是进行版本控制的⼀个文件目录。我们要想对文件进行版本控制,就必须先创建⼀个仓库出来。

        首先touch 一个文件:

        初始化仓库:

        创建完成后,我们会发现当前目录会出现一个.git 文件

        我们发现,当前目录下多了⼀个 .git 的隐藏文件, .git 目录是 Git 来跟踪管理仓库的,不要手动修改这个目录里面的文件,不然改乱了,就把 Git 仓库给破坏了。

配置 Git

        当安装 Git 后首先要做的事情是设置你的 用户名称 和 e-mail 地址,这是非常重要的。配置命令为:      

git config user.name "XX"
git config user.email  "XXXXX"
# 把 Your Name 改成你的昵称
# 把 email@example.com 改成邮箱的格式,只要格式正确即可。

查看配置命令为:

git config -l 

如果这样显示则说明配置成功。 

删除name 和email 的操作。 

git config  --unset user.name
git config  --unset user.email

在系统下并非只有一个git的仓库,如果我们想让每个仓库都配置上我们设置的name 和 email 的话,就要使用 git config --global user.name/email 。

删除对应的配置命令为:

git config [--global] --unset user.name
git config [--global] --unset user.email

工作区、暂存区、版本库

        工作区:是在电脑上你要写代码或文件的目录。
        暂存区:英文叫 stage 或 index。⼀般存放在 .git 目录下的 index 文件(.git/index)中,我们
把暂存区有时也叫作索引(index)。
        版本库:又名仓库,英文名  repository。工作区有⼀个隐藏⽬录 .git ,它不算工作区,而
是 Git 的版本库。这个版本库里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git
都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

注意:我们不能手动修改 ".git" 文件下的任何文件。那么我们改如何管理我们的readme文件呢? 

        图中左侧为工作区,右侧为版本库。Git 的版本库里存了很多东西,其中最重要的就是暂存区。
        在创建Git版本库时,Git会为我们自动创建⼀个唯⼀的 master 分支,以及指向 master 的⼀个指针叫 HEAD。
        当对工作区修改(或新增)的文件执行 git add 命令时,暂存区目录树的文件索引会被更新(并没有存对象,只存索引,所以是轻量级的)。同时修改的工作区内容会写入对象库的一个新的git对象中。
        当执行提交操作 git commit 时,master 分支会做相应的更新,可以简单理解为暂存区的目录
树才会被真正写到版本库中,这是git才对其进行了真正的管理。

        由于这是我们新建的一个仓库,没有进行add操作 所以还没有暂存区。

   我们能对工作区的 “readme” 文件进行直接的管理吗,经过上述的解释,只能通过 add commit 等操作之后,将readme 添加至版本库,我们才能对其进行管理。

        首先进行 add 操作 ,我们可以git add . 也可以git add readme ,前者是将工作区所有文件添加至暂存区,而后者则是将指定文件添加至暂存区。

        之后进行commit 操作:将暂存区内容提交至本地仓库(版本库)。

        我们可以发现git给我们维护的十分详细。

        如何查看我们提交的信息,使用 git log 或者 git log --pretty=oneline,区别在于是否一行打印出来。

        其中每次提交都会生成commit id 来轻量化的记录我们打印的信息。

查看 .git文件

先来看看我们的 .git 的⽬录结构:

1. index 就是我们的暂存区,add 后的内容都是添加到这⾥的。

2. HEAD就是我们的默认指向 master 分支的指针:

3. objects 为 Git 的对象库,里面包含了创建的各种版本库对象及内容。当执行git add  命令时,暂存区的⽬录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的⼀个新的对象中 ,就位于 ".git/objects" 目录下。

        HEAD里面存储的是 ref: refs/heads/master 那么master 中是什么呢?我们可以通过打印出master来查看。

        我们发现master里存放的是最近一次提交的commit id。

         注意:commit id 我们要分为前后两部分来看,查找 object 时要将 commit id 分成2部分,其前2位是⽂件夹名称,后38位是文件名称。找到这个文件之后,⼀般不能直接看到里面是什么,该类文件是经过(安全哈希算法)加密过的文件,好在我们可以使用 git cat-file 命令来查看版本库对象的内容

         其中在详细的信息中我们可以发现有一行为tree ,打印tree的commit id 我们发现是我们进行提交的readme 文件以及其 commit id ,在对其commit id 进行打印我们会发现里面显示出来我们修改的内容。

        我们每一次对文件的修改,提交到本地仓库后都会被git记录下来。修改的工作区内容会写入对象库的一个新的git中。

        添加文件:

        如果我们创建了一个至多个文件但是只对其中的一个文件进行add commit 操作,那么仅仅这一个文件被放到本地仓库了,要是想对余下的文件也让其放到本地仓库中,我们就需要对其余的文件进行“add” 或者 “add.” ,之后今天commit就能够放到本地仓库了。

        Git 比其他版本控制系统设计得优秀,因为 Git 跟踪并管理的是修改,而非文件。什么是修改?比如你新增了一行,这就是⼀个修改,删除了一行,也是⼀个修改,更改了某些字符,也是⼀个修改,删了⼀些又加了⼀些,也是⼀个修改,甚至创建⼀个新文件,也算⼀个修改。

        我们对readme文件添加一行代码。

        此时,仓库中的 readme 和我们⼯作区的 readme 是不同的,使用 git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。

        在一个项目中往往一次修改的代码往往成千上万行,此时我们想要查看工作区与本地仓库之间的代码我们就要使用 git diff XXX 命令 。

        此时再进行add操作,然后查看状态发现此时状态已经改变。

        当我们commit 之后,显示如下。

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

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

相关文章

行列式错题本

《1800》 1 阶数和转置 A是三阶,B是4阶,还有2这个系数 2 怎么啥也不会呀,委屈 行列式的拆分+提取系数 3

uniapp 安装安卓、IOS模拟器并调试

一、安装Android模拟器并调试 1.下载并安装Android Studio。 2.创建简单project。 3.安装模拟器。 完成安卓模拟器的安装。 4.启动模拟器。 5.hbuilderx选择模拟器、运行。 点击刷新按钮后出现模拟器,勾选并运行。 6.调试。 在 HBuilderX 中,项目启…

每天一道leetcode:20.有效的括号(简单;栈的经典题目)

⭐今日份题目 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对…

Nano 33 BLE Sense Rev2学习第一节——环境配置

参考文档见Access Barometric Pressure Sensor Data on Nano 33 BLE Sense | Arduino Documentation 打开Arduino ide安装开发板 选择开发板 连接开发板到电脑,自动识别开发板端口,选择端口

Python-类型检查:typing模块和mypy工具

Python-类型检查&#xff1a;typing模块和mypy工具 >>返回Python系列文章目录<< 文章链接: Python中typing模块 文章链接: PyCharm集成类型检查mypy

ssh 一次执行多条命令(后台运行)

文章目录 1. 背景2. 命令2.1 命令分隔符2.2 多行脚本2.3 单行脚本 3. SSH 任务后台运行 1. 背景 有时我们只需要远程执行一次任务然后就关闭&#xff0c;而不需要长时间 ssh 登录到远程服务器。同时一次任务可能需要执行多条命令&#xff0c;那么我们该如何做呢&#xff1f; …

【Java】查看class文件的jdk编译版本的两种方式

一、使用文本编辑工具EditPlus 使用EditPlus打开该class文件&#xff0c;字符集选择16进制&#xff08;Hex viewer&#xff09;。 仅看第一行数据&#xff0c;前面8个字节CA FE BA BE是固定的。 之后4个字节00 00 是次版本。 次版本后面的4个字节00 34 就是jdk版本。 jdk版本…

torch中的sort用法|torch.sort

今天在学习代码时&#xff0c;发现有些深度学习的项目中使用到torch.sort()函数&#xff0c;在此记录一下&#xff0c;方便自己的查阅. torch.sort() 官网给出了非常详细的介绍&#xff0c;但是为了更进一步掌握这一用法&#xff0c;在此记录一下。 具体官网链接如下&#xf…

华为认证HCIP报名条件有哪些?考试要求介绍

华为HCIP认证是很多网络工程师的考证首选&#xff0c;尤其对于刚入行不久的网络工程师们来说&#xff0c;这个证书无论是从难度出发还是从含金量出发&#xff0c;都是值得一考的。 那么如果想报名华为HCIP认证有哪些条件以及考试要求&#xff0c;华为HCIP的报名需不需要通过机…

镜头畸变模型及去畸变的原理

1. OpenCV去畸变undistortPoints原理解析 Opencv中镜头畸变包含了径向畸变和切向畸变&#xff0c;本章节主要阐述镜头畸变模型以及去畸变的原理。 1.1 镜头畸变模型 参考opencv文档 https://docs.opencv.org/3.1.0/d4/d94/tutorial_camera_calibration.html&#xff0c;opencv…

基于SpringBoot+MYSQL的医护人员排班系统

基于springboot的医护人员排班系统录像 1、 前言介绍 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了医护人员排班系统的开发全过程。通过分析医护人员排班系统管理的不足&#xff0c;创建了一个计算机管理医护人员…

LSA头部结构简述

LSA&#xff08;Link State Advertisement&#xff09;是一种用于路由协议头部结构&#xff0c;用于在网络中传递路由信息。 LSA头部结构包含以下几个字段&#xff1a; 1、LSA类型&#xff08;LSA Type&#xff09;&#xff1a;指示LSA的类型&#xff0c;不同类型的LSA用于传递…

Rabbitmq消息丢失-消费者消息丢失(二)

说明&#xff1a;消费端在处理消息的过程中出现异常&#xff0c;例如&#xff1a;业务逻辑异常&#xff0c;或者消费者被停机&#xff0c;或者网络断开连接等&#xff0c;以上等情况使消息没有得到正确恰当的处理&#xff0c;也会使消息丢失。 分析&#xff1a;分析就是说明中…

Composer基础使用 SDK包初始化

Composer 的工作原理 我们在使用 Composer 之前我们得了解一下它的实现原理&#xff0c;它主要由三个部分组成&#xff1a;命令行工具、包仓库、代码库&#xff1a; Packagist 它是官方仓库&#xff0c;也就是我们平常说的 Composer 源&#xff0c;它的作用是存储这些包的信息…

参数引入和全局变量引入实现-目标和

LCR 102. 目标和 - 力扣&#xff08;LeetCode&#xff09; 分析题意&#xff0c;画出决策树&#xff0c;其他的思路都跟前面讲过的类似&#xff1a; 全局变量引入实现&#xff1a; 全局变量的引入&#xff0c;需要手动处理回溯&#xff1b; class Solution {int ret; //…

从0到1全流程使用 segment-anything

从0到1全流程使用 segment-anything 一、安装 anaconda 一、下载 anaconda 二、以管理员身份运行安装 1、勾选 Just Me 2、统一安装路径(后续 python 等包也安装至此目录) 3、勾选 add to path 然后安装即可。 三、修改 Anaconda 默认路径及默认缓存路径 Anaconda 默认下…

K8S集群误删master节点,master节点恢复完美解决

问题描述&#xff1a; 在单节点的master节点k8s集群中不小心误删了master节点导致集群不可用。 多节点应的恢复方式同样也适用。 解决方案&#xff1a; 两条命令解决master节点恢复&#xff0c;而不是去重装k8s集群。 执行下面命令&#xff0c;生成节点的join命令 kubeadm t…

蓝桥杯 9241.飞机降落

这道题本来作者以为是可以用一些小技巧进行暴力解法的&#xff0c;但是后来试了一下&#xff0c;不能过去全部数据。 下面是对半个的题解&#xff1a; #include<iostream> #include<stdio.h> #include<cstring> #include<cstdlib> #include<cmath…

掌握 Python: 每个开发人员都应该知道的6个秘密技巧

无论你是一名经验丰富的开发者还是刚踏入编程世界的新手&#xff0c;Python 很可能已经引起了你的兴趣。 它功能强大、灵活多变&#xff0c;而且非常用户友好&#xff01;但是&#xff0c;让我们更进一步吧! 在这篇博客中&#xff0c;我将揭示一些隐藏的 Python 技巧&#xff0…

#QT(DEMO)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a;打印"hello wolrd" 3.记录 &#xff08;1&#xff09;创建一个新工程&#xff1a; 新建好一个工程存放文件夹&#xff08;路径不能有中文&#xff09;,然后按下图配置 &#xff08;2&#xff09;点击widgets.ui拖入以…