1.Git是用来干嘛的
本文章学习于【GeekHour】一小时Git教程,来自bilibili
Git就是一个文件管理系统,这样说吧,当多个人同时在操作一个文件的同时,很容易造成紊乱,git就是保证文件不紊乱产生的
包括集中式管理系统和分布式管理系统
听懂了,集中式管理系统就是从中央服务器上下载最新的版本文件,修改文件之后将 文件上传到中央管理系统,然后中央管理系统得到你更改之后的文件
缺点:中央服务器出现问题所有人都无法工作
都有一个完整的版本库,不需要网络就可以直接在本地修改
当需要把文件分享给其他人的时候,只需要把仓库互相同步一下就行了
git就是分布式的
如何新建一个管理库
将仓库理解为一个目录,这个目录下的所有文件的修改,删除,git都可以追踪到,这样我们就可以恢复到之前的版本
git init:在本地上面创建一个文件夹
git clone:直接从github上克隆一个项目,会生成一个文件夹
windows系统下bash的操作
ls -a是用来检测git文件是否存在,是仓库是否创建成功的标志
可以通过以上命令来观察git文件的内容,但是不要轻易修改
现在我们返回到之前的文件夹,然后我们通过 \rm -rf .git 将git文件删除掉,然后我们在当前文件夹 下面重新创建了一个my-repo的文件夹,并且以这个为仓库继续执行(my-repo中有我们的.git)
之后我们进入我们的my-repo文件夹并且检索文件中是否含有.git
Git的工作区域和文件状态
工作区:就是我们电脑上的目录 .git所在的目录
暂存区:用于保存即将提交到github上的修改内容 .git/index所在
本地仓库:通过git init 创建的那个仓库
当我们的代码文件到达一定阶段之后,我们需要保存在本地仓库
如果我们每次修改一次文件就提交的话,会比较麻烦,所以我们先将我们将要提交的文件保存在暂存区中,然后某一阶段结束之后,再统一提交到本地仓库中
通过以上几个命令创建一个文件(在git文件所在的文件夹中打开git bash)
现在我们的file1.txt目前在工作区,现在我们将他载入到暂存区
然后我们的文件file变成了绿色,表示现在这个文件已经被添加到了暂存区,等待被提交
看绿色文件上方的文字
git rm 表示我们可以通过这个命令来取消暂存
git commit只会提交暂存区中的文件,而不会提交工作区的其他文件
接着我们提交file1这个文件
之后我们添加了几个文件,这些文件用来演示git add多个文件的操作
值得注意的是ls命令会把所有工作区中(包括已提交)的文件显示出来
只有看git status才知道有没有放到暂存区,或者已经提交了
我们接着使用git add *.txt将文件提交到本地仓库中
txt文件全部提交
使用git . 可以该文件夹下的所有文件都提交到暂存区中
这里的 . 表示当前目录
如果我们使用git commit就会进入到交互页面,交互页面是一个vs的界面
使用方向键 来移动光标
使用i键进入编辑模式
输入提交信息
之后esc键回到命令模式
输入:wq命令保存退出
可以看到所有文件都已经提交完成了
使用git log 来查看提交记录,可以看到我们的两次提交
每次提交都有一个提交id
以及提交的作者和邮箱id
还有日期
可以使用git log --oneline 来展示简介的提交记录
让我们总结一下:
-
git status
查看仓库的状态 -
git add
提交到暂存区 -
git commit
提交 ——只提交暂存区的内容,不会提交工作区 -
git log
查看仓库提交历史记录——可以使用log -- oneline
来查看简介的提交记录
git reset
reset命令用于提交版本,可以用于回到之前的某个提交的状态
git reset的三种模式
git reset --soft
表示回退到某个版本,并且保存工作区和暂存区的所有修改内容
git reset -- hard
表示回退到某个版本,并且丢弃工作区和暂存区的所有修改内容
git reset --mixed
表示回退到某个版本,并且只保存工作区 的修改内容并且丢弃暂存区的修改内容
首先我们重新回到learn_git的开始部分
然后重新创建一个空的带有git的文件夹,相当于工作区
然后我们加入了三个文件
接着分别提交
我们首先打开一个新的终端(还是bash)
接着我们将这个文件夹复制三份 分别来执行三种不同的soft命令
然后我们使用soft命令回退到之前的状态,
这是之前提交的状态码
我们可以注意到file3并没有添加到暂存区,这是因为我们回退到了第二个版本
我们接着我们的实验,进入到hard文件夹下面
使用reset hard进入到之前的状态
然后我们进行检测
lsb表示工作区的内容,git ls-files表示暂存区的内容
接着做那个git reset
谨慎使用git reset--hard 这个命令,不过使用了其实也没什么关系
不过如果使用了也没有关系,因为我们可以回退
这个时候我们可以发现通过这个标号,我们成功回退到了之前的状态
git diff
查看工作区、暂存区、本地仓库之间的差异
git diff 如果后面什么也不加,会默认比较工作区和暂存区之间的内容
我们以修改file3.txt文件为例子
第一行显示的是哪个文件改变了
第二行展示的是文件的哈希值 后面的10064表示的是文件的权限
接着我们提交,然后再次检测git diff 可发现没有发现异常
将我们的暂存区和本地仓库的区别也可以显现出来
使用git diff HEAD
命令即可比较工作区和本地仓库之间的差异
使用git diff --cached
可以比较暂存区和本地仓库之间的差异
图片没有保存到本地,下次我注意一下
相关文章:

1.Git是用来干嘛的
本文章学习于【GeekHour】一小时Git教程,来自bilibili Git就是一个文件管理系统,这样说吧,当多个人同时在操作一个文件的同时,很容易造成紊乱,git就是保证文件不紊乱产生的 包括集中式管理系统和分布式管理系统 听懂…...

Git安装教程(图文安装)
Git Bash是git(版本管理器)中提供的一个命令行工具,外观类似于Windows系统内置的cmd命令行工具。 可以将Git Bash看作是一个终端模拟器,它提供了类似于Linux和Unix系统下Bash Shell环境的功能。通过Git Bash,用户可以在Windows系统中运行基于…...

SpringData ElasticSearch - 简化开发,完美适配 Spring 生态
目录 一、SpringData ElasticSearch 1.1、环境配置 1.2、创建实体类 1.3、ElasticsearchRestTemplate 的使用 1.3.1、创建索引 设置映射 1.3.2、创建索引映射注意事项(必看) 1.3.3、简单的增删改查 1.3.4、搜索 1.4、ElasticsearchRepository …...

突破!AI机器人拥有嗅觉!仿生嗅觉芯片研究登上Nature子刊
我们一直梦想着让AI与人类能够更加相似,赋予它们视觉与听觉。而让机器人拥有嗅觉一直以来面临着巨大的困难。 香港科技大学范志勇教授领导的研究团队凭借最新研发的仿生嗅觉芯片(BOC)在这一领域取得了重大突破。该研究成果目前已被发表到IF …...

前端接口防止重复请求实现方案
前言 前段时间老板心血来潮,要我们前端组对整个的项目都做一下接口防止重复请求的处理(似乎是有用户通过一些快速点击薅到了一些优惠券啥的)。。。听到这个需求,第一反应就是,防止薅羊毛最保险的方案不还是在服务端加…...
【leetcode面试经典150题】13.除自身以外数组的乘积(C++)
【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…...

网络编程核心概念解析:IP地址、端口号与网络字节序深度探讨
⭐小白苦学IT的博客主页 ⭐初学者必看:Linux操作系统入门 ⭐代码仓库:Linux代码仓库 ❤关注我一起讨论和学习Linux系统 本节重点 认识IP地址, 端口号, 网络字节序等网络编程中的基本概念; 1.前言 网络编程,作为现代信息社会中的一项核心技术&…...
突破编程_C++_网络编程(TCPIP 四层模型(网络层(1))
1 网络层概述 TCP/IP 四层模型中的网络层是模型中的核心组成部分,它主要负责处理数据包的路由和转发,确保数据能够在源主机和目标主机之间准确地传输。 一、主要功能 网络层的主要功能是实现数据包的选路和转发。当数据从应用层传输到传输层后&#x…...

Java | Leetcode Java题解之第9题回文数
题目: 题解: class Solution {public boolean isPalindrome(int x) {// 特殊情况:// 如上所述,当 x < 0 时,x 不是回文数。// 同样地,如果数字的最后一位是 0,为了使该数字为回文࿰…...

极简云验证 download.php 文件读取漏洞复现
0x01 产品简介 极简云验证是一款开源的网络验证系统,支持多应用卡密生成:卡密生成 单码卡密 次数卡密 会员卡密 积分卡密、卡密管理 卡密长度 卡密封禁 批量生成 批量导出 自定义卡密前缀等;支持多应用多用户管理:应用备注 应用版…...

红黑树路径长度分析:证明与实现
红黑树路径长度分析:证明与实现 一、红黑树的基本性质二、证明:最长路径至多是最短路径的2倍2.1 证明思路2.2 证明过程 三、伪代码实现四、 C语言代码实现5、 结论 红黑树作为一种高效的自平衡二叉搜索树,在计算机科学领域中被广泛应用于各种…...
esp32 gpio初识(一)
目录 功能介绍 实操 功能介绍 引脚又叫管脚,英文叫 Pin, 就是从集成电路(芯片以及一些电子元件)内部电路引出与外围电路的接线的接口。 在我们的 ESP32 开发板上, 我们可以把这些称为引脚, 这些引脚其实是从 ESP32 芯片内部引出来的, 我们…...
python 自制黄金矿工游戏(设计思路+源码)
1.视频效果演示 python自制黄金矿工,细节拉满沉浸式体验,看了你也会 2.开发准备的工具 python3.8, pygame库(python3.5以上的版本应该都可以) 图片处理工具,美图秀秀 截图工具,电脑自带的 自动抠图网页:https://ko…...

Splunk Attack Range:一款针对Splunk安全的模拟测试环境创建工具
关于Splunk Attack Range Splunk Attack Range是一款针对Splunk安全的模拟测试环境创建工具,该工具完全开源,目前由Splunk威胁研究团队负责维护。 该工具能够帮助广大研究人员构建模拟攻击测试所用的本地或云端环境,并将数据转发至Splunk实例…...

OpenCV入门例程:裁剪图片、模糊检测、黑屏检测
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 本例程运行环境为CentOS7&…...
opencv-python库 cv2边界填充resize图片
文章目录 边界填充改变图片大小 边界填充 在OpenCV中,边界填充(Border Padding)是指在图像周围添加额外的像素,以扩展图像的尺寸或满足某些算法(如卷积)的要求。OpenCV提供了cv2.copyMakeBorder()函数来进…...

Java代码基础算法练习-负数个数统计-2024.04.04
任务描述: 从键盘输入任意10个整型数(数值范围-100000~100000),统计其中的负数个数 任务要求: 代码示例: package April_2024;import java.util.Scanner;// 从键盘输入任意10个整型数(数值范围…...
【算法刷题day17】Leetcode:110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和
110.平衡二叉树 文档链接:[代码随想录] 题目链接::110.平衡二叉树 题目: 给定一个二叉树,判断它是否是 平衡二叉树 注意: 判断两棵子树高度差是否大于1 class Solution { public:int result;bool isBalanced(TreeNode…...

C++ | Leetcode C++题解之第10题正则表达式匹配
题目: 题解: class Solution { public:bool isMatch(string s, string p) {int m s.size();int n p.size();auto matches [&](int i, int j) {if (i 0) {return false;}if (p[j - 1] .) {return true;}return s[i - 1] p[j - 1];};vector<…...
职场迷航?MBTI测试为你指明方向,找到最匹配的职业!
MBTI简介 MBTI的全名是Myers-Briggs Type Indicator。它是一种迫选型、自我报告式的性格评估工具,用以衡量和描述人们在获取信息、作出决策、对待生活等方面的心理活动规律和性格类型。 类型指标 美国的凯恩琳布里格斯和她的女儿伊莎贝尔布里格斯迈尔斯研制了迈尔…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...