git基本操作(配图超详细讲解)

news2024/12/27 7:25:42

 个人主页:Lei宝啊 

愿所有美好如期而遇


目录

创建git本地仓库

配置仓库

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

修改文件

版本回退

撤销修改

删除文件


创建git本地仓库

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

首先创建一个目录,我们叫做Git

接着进入该目录,使用git init命令创建一个git本地仓库 

ls -al 我们可以看到.git目录,这就是我们的本地仓库了 

.git里的文件不要手动修改,否则仓库就废了。

配置仓库

当安装好Git后⾸先要做的事情是设置你的⽤户名e-mail地址,不要瞎给,给和你gitee相同的用户名和e-mail。

查看仓库配置命令

git config -l

我这里是配置过的。

配置命令

git config  user.name "your name"      (当前仓库进行配置)

git config  --global user.name "your name"      (本台机器上所有仓库进行配置)

git config user.email "email@example.com"

git config --global user.email "email@example.com"

删除对应配置命令

git config --unset user.name

git config --global --unset user.name

git config --unset user.email

git config --global --unset user.name

发现用户名的配置没有被删除,但是加了global就可以了,是因为我配置的时候就加了global,所以在配置和删除时一定要对应。

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

工作区:我们远程推送代码的地方

暂存区:.git下的index文件

版本库:就是.git,这个版本库里所有文件都可以被他管理起来

更深入的理解我们稍后会说到。

git add .将文件添加到暂存区

git commit -m "" 将文件提交到本地仓库

我们再来添加几个文件就可以开始我们的理解了。

我们tree .git

接下来顺着我的思路一步步看下去。 

这一串字符叫做commit id,而且我们看的时候需要分成两部分,前两个数字是文件夹的名字,后面是文件的名字,而且我们一般不能直接看到里面有什么,该类文件是通过安全哈希算法加密过的,我们可以通过git cat-file 查看

这个是我们最新提交的。

这是我们提交过的,也就是tree后的commit id

这是最新提交的上一条提交,也就是parent后的commit id,由于这条提交是第一条提交,所以没有parent的commit id

查看Readme文件的内容 

此外,git log可以查看历史提交记录

 为了使打印结果更加美观,我们可以这样

修改文件

我们提到的修改:新增,修改,删除

git跟踪管理的不是文件,而是工作区内容的修改,这些修改就存放在对象区。

我们再来对文件进行修改,这是我们修改的代码量比较少,所以我们还是可以区分哪些是修改的,而且找的到,如果我们的代码写了几百行,这时候增删我们再查看就找不全哪些是修改过的了,所以在这里我们认识一个指令

git status  查看上次提交之后是否对文件有再次修改

没有需要提交的内容,这是因为我们没有add修改过的Readme文件,但是下面是可以看到我们对Readme文件是有修改的。

但是这样还不够,我们看不到具体修改了什么内容,这里还有一个指令

git diff 文件名 这个指令用来显示暂存区和工作区的差别

 

我们再来试一次

这一次我们删除了工作区的一个文件,(Read文件未添加和提交,所以我们删除也不会显示),并且在Readme文件中添加了些内容,通过git status可以查看上次提交后是否有修改,这次我们有删除和修改。

新增了两行。

我们能产生对比效果,是因为已经经过了add,这里是在添加这两行前对Readme文件进行了add,因为git diff是对暂存区和工作区的一个对比。 

版本回退

之前我们提到过git可以管理历史文件的版本,如果有天你想找回之前版本的文件,这时候,版本回退就很必要了。

我们可以看到我们提交的文件历史记录,现在我们将后来再次修改的文件再次做提交。

现在我们想将文件退回到第二个版本,我们当前是最新版本。

git reset --soft commit id

git reset --mixed commit id

git reset --hard commit id

或者 

git reset --soft HEAD^, HEAD^表示上个版本,HEAD^^表示上上个版本。

……

也可以

git reset --soft HEAD~1 表示退回第几个版本,0就代表当前的最新版本。

……

三个选项的区别是什么呢?

首先我们要明确的是上个版本与当前版本差的是一句try again。

而系统默认的回退方式是--mixed,我们也要慎重使用--hard,否则工作区辛苦写了几天的代码,一行指令就没了,无法找回。

我们再回退至刚才的最新版本

我们能够自由回退到任意版本,就是因为我们能够找到commit id,如果说你不小心clear,找不到commit id怎么办,没关系,还有办法

git reflog  该命令记录了本地的每一条命令

但作者还想说的是,随着提交记录的变多,有些记录早就找不到了,到那时候,就真找不回来了。

值得说明的是,git回退版本的速度非常快,原因我们画图来解释:

 

也就是说每个版本都有单独存储,需要回退到哪个版本就使HEAD指向哪个版本。

 

撤销修改

版本回退本质是回退版本库,但是撤销修改本质是撤销工作区内容的修改。

我们再对Readme文件做一些修改

我们发现之前的内容没了,如何撤销修改?  

未add

git checkout -- filename

已经add,但未commit 

这时候就要重新提起我们的reset了,他有回退到当前版本的功能,所谓当前版本,就是以版本库为参照,回退到版本库。

我们画个图:

我们要回退到版本库那个样子,怎么做呢?

有两个办法 ,使用--hard全部回退到当前版本,一步到位

第二个办法,先--mixed回退暂存区至当前版本,然后checkout --撤销修改

已经commit 

还是有两种办法,第一种就是reset指定上一次的版本进行回退,直接--hard commit id

第二种方式就是--hard HEAD^回退至上一个版本。

删除文件

删除文件也算是一种修改,我们rm file删除文件后,正常添加,提交就可以了。

还有简单一步的:

省去了提交这一步骤。

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

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

相关文章

OpenCV C++ 图像处理实战 ——《OCR字符识别》

OpenCV C++ 图像处理实战 ——《OCR字符识别》 一、结果演示二、tesseract库配置2.1下载编译三、OCR字符识别3.1 文本检测方式3.1.1 RIL_BLOCK3.1.2 RIL_PARA3.1.3 RIL_TEXTLINE3.1.4 RIL_WORD3.1.5 RIL_SYMBOL3.2 英文文本检测3.3 中英文本检测四、源码测试图像下载总结一、结…

如何从回收站恢复已删除的文件

我们在各个领域都使用计算机。无论是专业工作还是个人工作,我们在生活中总能找到计算机的用途。因此,我们在很大程度上依赖于我们的计算机。计算机是办公室和企业部门使用的高效机器。 人们使用个人计算机发送电子邮件、创建文档、听音乐和观看视频等等…

十二.Jenkins持续集成

十二.Jenkins持续集成 一.安装jenkins 1.下载 Jenkins下载地址:http://jenkins-ci.org/ 或 https://mirrors.jenkins-ci.org/redhat/2.安装 可以通过官网的安装方式来安装 安装完后,需要修改以下的配置 vim /usr/lib/systemd/system/jenkins.servic…

lectin

PSGL-1 ; selectin O-linked glycosylation | Detailed Pedia PSGL-1 has several O-glycans to extend the ligand away from the cell surface. An sLex epitope allows interactions with the receptor for leukocyte localisation. 分类 --Recognition by Animal Lectins…

MatLab的下载、安装与使用(亲测有效)

1、概述 MatLab是由MathWorks公司开发并发布的,支持线性代数、矩阵运算、绘制函数和数据、信号处理、图像处理以及视频处理等功能。广泛用于算法开发、数据可视化、数据分析以及数值计算等。 Matlab 的主要特性包括: 简单易用的语法,使得程…

训练模型报错RuntimeError: Input, output and indices must be on the current device

问题出现: 当我训练图网络模型时,源码默认使用cpu,查看后台性能运行,发现正在使用cpu训练,这大大降低了训练速率,并且增加了电脑负载。所以我决定将模型改造并训练放在GPU上运行。 我在train方法中&#xf…

CentOS 7搭建Gitlab流程

目录 1、查询docker镜像gitlab-ce 2、拉取镜像 3、查询已下载的镜像 4、新建gitlab文件夹 5、在gitlab文件夹下新建相关文件夹 6、创建运行gitlab的容器 7、查看docker容器 8、根据Linux地址访问gitlab 9、进入docker容器,设置用户名的和密码 10、登录git…

Windos操作系统下的Zookeeper安装图文教程

凯哥已经准备好最新版本3.9.1且已经配置好了。既获取到配置好的。 获取到凯哥准备的安装后,只需要修改一下配置。将解压包解压后,找到conf文件,里面有个zoo.cfg配置文件。如下图: 下载后conf文件夹内容 打开zoo.cfg配置文件后&a…

Springboot 项目启动类放置位置

文章目录 Springboot 项目启动类放置位置springboot 默认包扫描机制启动类放在特定位置springboot 启动注解理解配置启动类扫描特定的包1、 ComponentScan2、利用 SpringBootApplication 注解的 scanBasePackages 属性 Springboot 项目启动类放置位置 如果我们使用 IDEA 或者 …

torch.nn.functional.log_softmax 函数解析

该函数将输出向量转化为概率分布,作用和softmax一致。 相比softmax,对较小的概率分布处理能力更好。 一、定义 softmax 计算公式: log_softmax 计算公式: 可见仅仅是将 softmax 最外层套上 log 函数。 二、使用场景 log_soft…

【算法训练营】参数解析+跳石板

🌈欢迎来到Python专栏 🙋🏾‍♀️作者介绍:前PLA队员 目前是一名普通本科大三的软件工程专业学生 🌏IP坐标:湖北武汉 🍉 目前技术栈:C/C、Linux系统编程、计算机网络、数据结构、Mys…

元宇宙3D云展厅应用到汽车销售的方案及特点

为了紧紧抓住年轻消费者的需求,汽车销售行业也正在经历一场深刻的变革。在这个变革的前沿,元宇宙3D汽车展厅作为一项全新技术闪亮登场,打破了传统汽车销售模式的限制,为消费者带来了前所未有的购车体验。 元宇宙3D汽车展厅采用了尖…

竞赛选题 深度学习驾驶行为状态检测系统(疲劳 抽烟 喝水 玩手机) - opencv python

文章目录 1 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的驾…

java每日一记 —— 谈谈反射

这应该是基础吧 1.先来说点前置知识:类的加载机制2.以自己的方式来谈反射的概念3.获取class的三种方式3.1.通过已知的类型获取class3.2.通过实例对象获取class3.3.通过Class.forName获取全路径指定类名的class 4.整理了一下API:坦言说🪡累5.现…

【腾讯云云上实验室-向量数据库】TAI时代的数据枢纽-向量数据库 VectorDB

一、向量数据库的发展历程和时代机遇 回顾向量数据库的发展历程: 2012年开始,深度神经网络的发展催生了向量数据库的发展;2015年至2016年,Google和微软发布了标志性的论文;2017年,Facebook开源了Faiss框架…

【具身智能评估1】具身视觉语言规划(EVLP)仿真环境汇总

参考论文:Core Challenges in Embodied Vision-Language Planning 论文作者:Jonathan Francis, Nariaki Kitamura, Felix Labelle, Xiaopeng Lu, Ingrid Navarro, Jean Oh 论文原文:https://arxiv.org/abs/2106.13948 论文出处:Jo…

文心一言-情感关怀之旅

如何让LLM更有温度。 应用介绍

猜数字优化版(带进度条)

其实就是加了个动态进度条显示加载游戏的流程&#xff0c;这样看上去是不是更有big了hhhh #include<windows.h> #include<iostream> #include<ctime> using namespace std; void menu() {printf("1.开始游戏\n");printf("0.退出游戏\n")…

PP-YOLOE: An evolved version of YOLO(2022.12)

文章目录 Abstract1. Introduction2. Method2.1. A Brief Review of PP-YOLOv22.2. Improvement of PP-YOLOEAnchor-freeBackbone and NeckTask Alignment Learning (TAL)Efficient Task-aligned Head (ET-head) 3.Experiment4. Conclusion 原文链接 源代码 Abstract 在本报告…

恕我直言,大模型对齐可能无法解决安全问题,我们都被表象误导了

是否听说过“伪对齐”这一概念&#xff1f; 在大型语言模型&#xff08;LLM&#xff09;的评估中&#xff0c;研究者发现了一个引人注目的现象&#xff1a;当面对多项选择题和开放式问题时&#xff0c;模型的表现存在显著差异。这一差异根源在于模型对复杂概念的理解不够全面&…