GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件
GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件
文章目录
- GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件
- 前言
- 一、安装git
- 二、git基本操作
- 2.1 初始化git
- 2.2 配置局部生效
- 2.3 配置全局生效
- 三、认识工作区、暂存区、版本库
- 3.1 添加文件场景一
- 3.2 查看添加的文件
- 3.3 添加文件场景二
- 四、修改文件
- 4.1 查看工作区的状态
- 五、版本回退
- 六、撤销修改
- 6.1 情况一:对于工作区的代码,还没有add
- 6.2 情况二:已经add ,但没有commit
- 6.3 情况三:已经add ,并且也commit 了
- 七、删除文件
前言
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
我们这里就不多介绍这里的
GIT了,百度百科和维基百科上都有很多介绍,我们这里就不再介绍,直接来演示~~
下面演示的均是Centos7.6系统,
- 我们先来检测以下git有没有安装
git --version
- 如果提示的是这样的就说明没有安装

一、安装git
- 执行以下命令,安装git
yum instal -y git
- 如果执行失败的话就先更新一下系统
yum update -y
- 然后再检测是否安装成功~

二、git基本操作
2.1 初始化git
- 安装好git后,我们就要创建一个本地仓库,就是要初始化一下
创建文件夹
mkdir gitcode
进入文件夹
cd gitcode/
初始化git
git init
查看是否初始化成功
ls -al

- 查看隐藏文件
git目录下,有什么文件~~

- 我们需要设置邮箱和用户名【这里是局部生效的配置用户名和邮箱】
2.2 配置局部生效
配置用户名
git config user.name "shilin"
配置邮箱
git config user.email "intshanxi@163.com"
查看配置
git config -l

那我想要删除刚刚配置的,就可以执行以下命令
删除用户名
git config --unset user.name
删除邮箱
git config --unset user.email

2.3 配置全局生效
- 将配置项生效所有仓库配置项
配置用户名
git config --global user.name "intshanxi"
配置邮箱
git config --global user.email "intshanxi@163.com"
查看刚刚配置的
git config -l

- 那我想要删除刚刚配置的,就可以执行以下命令~
删除用户名
git config --global --unset user.name
删除邮箱
git config --global --unset user.email
- 接下来我们就往这个仓库里生成一个文件
touch ReadMe
- 在目前情况下,git是不能管理这个文件的~~

- 我现在往git里添加了一点东西

三、认识工作区、暂存区、版本库
3.1 添加文件场景一
- 我们就来看第一个步骤
git add 文件名
或者只写一个.,这个意思就是全部添加
- 我们就来看第二个步骤
git commit -m '要描述的细节'

- 创建多个文件
touch file1 file2 file3
- 我们还可以用
.来一键添加

3.2 查看添加的文件
- 还可以查看最近提交的日志
git log

- 我们还可以再打印的简单一点,方便观察
git log --pretty=oneline

- 查看git日志后,commit后面的一串字符是(安全哈希算法)加密过的文件

- 我们可以通过命令来查看这个具体提交记录
git cat-file -p fc9176efe2397e38411e1ec44b9f58be6e0cc99f

- 在其中有一行
tree 0e6b1780b73cd9220ec5073dc64b42f7ad4bd945 - 然后再查看一下这个
git cat-file -p 0e6b1780b73cd9220ec5073dc64b42f7ad4bd945
- 继续查看文件内容
git cat-file -p 8d0e41234f24b6da002d962a26c2495ea16a425f

3.3 添加文件场景二
git add file4
touch file5
git commit -m 'add file4'
- 这里虽然添加了两个文件,但是只有
file4添加到了暂存区,提交修改的时候只有file4发生了变化,而file5没有发生变化

四、修改文件
-
git其实管理的是修改,而不是文件
-
我们先修改了
ReadMe

4.1 查看工作区的状态
- 我们查看当前工作区的状态
git status

- 那我们想查看修改了哪些内容呢?
git diff 文件名

- 这个时候我们再提交一下
git add ReadMe
- 查看状态
git status

- 这个时候就再提交
git commit -m 'add modify ReadMe file'
- 再查看
git status

五、版本回退
-
刚开始文件里的内容只有一行,后来添加了两行
-
对于这个文件来说是有两个版本的

-
这里的回退命令是
git reset可以指定某一次提交的版本 -
git reset 命令语法格式为:
git reset [--soft | --mixed | --hard] [HEAD]- –mixed 为默认选项,使⽤时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容,工作区文件保持不变。
- –soft 参数对于工作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
- –hard 参数将暂存区与工作区都退回到指定版本。切记工作区有未提交的代码时不要用这个命令,因为工作区会回滚,你没有提交的代码就再也找不回了,所以使用该参数前一定要慎重。
-
HEAD 说明:
◦ 可直接写成 commit id,表示指定退回的版本
◦ HEAD 表示当前版本
◦ HEAD^ 上一个版本
◦ HEAD^^ 上上一个版本
◦ 以此类推… -
可以使用 ~数字表示:
◦ HEAD~0 表示当前版本
◦ HEAD~1 上一个版本
◦ HEAD^2 上上一个版本
◦ 以此类推…
- 查看日志
git log --pretty=oneline
- 回退到最初版本
git reset --hard eea6e0091277b0e3de6739d0cede91333284b6e7

- 可以看到一旦回到这一次,我们后面创建的文件都会被删除
- 我们再来看文件的内容
cat ReadMe

- 查看日志
git log --pretty=oneline

- 那有人说我又后悔了怎么办?
- 想要再回退回去
- 我们刚刚打印过这一个最新的版本我们就回退到这个版本
git reset --hard b842e9f3f8a267b0957389abae0dbc159d12fd43

- 我们再来看一下当前目录下
- 文件回来了,文件里的内容也会来了

- 再来打印这个日志
- 这个log也回来了
git log --pretty=oneline

- 那我回退了最初的版本后,找不到那个字符串了怎么办?
- 我们还有一种方法
- 查看
git reflog

- 回退版本
git reset --hard b842e9f

- 这样就可以回退回去了
- 那么这里的版本回退为什么会这么快呢?
- 是因为有一个
HEAD指针

六、撤销修改
- 如果我们在我们的工作区写了很长时间代码,越写越写不下去,觉得自己写的实在是垃圾,想恢复到上一个版本。

6.1 情况一:对于工作区的代码,还没有add
- 我们先对ReadMe进行修改

-
我们想撤销我们的代码,我们可以重新再次编辑删除掉那一行代码,就可以了
-
那写了很多呢?想一次性撤销,那怎么办呢?接下来我们来看~~
-
查看修改了哪些内容
git diff ReadMe

- 想要一次撤销,我们执行以下命令
git checkout -- ReadMe
-
这里的
--就是回退到最近一次add或者commit的操作 -
我们再次打印,新增的那一行就没有了

6.2 情况二:已经add ,但没有commit
- add 后还是保存到了暂存区呢?怎么撤销呢?

- 让我们来回忆一下学过的
git reset回退命令,该命令如果使用--mixed参数,可以将暂存区的内容退回为指定的版本内容,但工作区文件保持不变。那我们就可以回退下暂存区的内容了!!!
git reset HEAD ReadMe
HEAD代表当前版本HEAD^代表上一个版本HEAD^^代表上一个版本

- 这个时候再进行情况一的回退
git checkout -- ReadMe

6.3 情况三:已经add ,并且也commit 了
-
我们可以
git reset --hard HEAD^回退到上一个版本!不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面章节会讲到远程版本库,一旦你推送到远程版本库,你就真的惨了 -
我们先修改文件,然后添加文件【add】【commit】
-
然后修改
git reset --hard HEAD^

七、删除文件
- 删除文件
git rm file
git commit -m '记录'

我们这里的git基础操作就到这里了,我们后面还有一些进阶操作~~
感谢大家的收看,我们共同进步!!!
相关文章:
GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件
GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件 文章目录 GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件前言一、安装git二、git基本操作2.1 初始化git2.2 配置局部生效2.3 配置全局生效 三、认识工作区…...
HCIA-RS基础-距离矢量路由协议
前言: 动态路由协议根据寻径方式可以分为距离矢量路由协议和链路状态路由协议。本文将详细介绍距离矢量路由协议的原理,并阐述其中一个重要概念——路由环路,同时介绍如何避免路由环路的方法。通过学习本文,您将能够深入理解距离矢…...
Python与设计模式--简单工厂模式
2-Python与设计模式–简单工厂模式 一、快餐点餐系统 想必大家一定见过类似于麦当劳自助点餐台一类的点餐系统吧。在一个大的触摸显示屏上,有三类可以选择的上餐品: 汉堡等主餐、小食、饮料。当我们选择好自己需要的食物,支付完成后&#x…...
四、防火墙-NAT Server
学习防火墙之前,对路由交换应要有一定的认识 NAT Server1.1.基本原理1.2.多出口场景下的NAT Server1.3.源进源出 —————————————————————————————————————————————————— NAT Server 一般对用户提供一些可访问的…...
Rust - cargo项目里多个二进制binary crate的编译运行
目录 foo - Cargo.toml - src - - main.rs - - bin - - - other-bin.rs将除默认入口文件外待作为二进制crate处理的文件放在src/bin目录下 方法一: 命令行增加配置项 --bin xxx cargo run --bin foo // 注意! 这里是包名,不是main cargo run --bin o…...
python爬虫教程:selenium常用API用法和浏览器控制
文章目录 selenium apiwebdriver常用APIwebelement常用API 控制浏览器 selenium api selenium新版本(4.8.2)很多函数,包括元素定位、很多API方法均发生变化,本文记录以selenium4.8.2为准。 webdriver常用API 方法描述get(String url)访问目标url地址&…...
2024年天津天狮学院专升本食品质量与安全专业《分析化学》考纲
2024年天津天狮学院食品质量与安全专业高职升本入学考试《分析化学》考试大纲 一、考试性质 《分析化学》专业课程考试是天津天狮学院食品质量与安全专业高职升本入学考试 的必考科目之一,其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试。《…...
2023年亚太地区数学建模大赛 C 题
我国新能源电动汽车的发展趋势 新能源汽车是指以先进技术原理、新技术、新结构的非常规汽车燃料为动力来源(非常规汽车燃料指汽油、柴油以外的燃料),将先进技术进行汽车动力控制和驱动相结合的汽车。新能源汽车主要包括四种类型:…...
TDlib readme
不同开发语言使用TDlib的连接入口:td/example/README.md at master tdlib/td (github.com) 如golang:td/example/README.md at master tdlib/td (github.com)...
紧急救援【Dijkstra】
作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的…...
「Verilog学习笔记」数据累加输出
专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 在data_out准备好,valid_b拉高时,如果下游的ready_b为低,表示下游此时不能接收本模块的数据,那么,将会拉低ready…...
typeof,instanceof
1.typeof typeof运算符返回的结果是以小写的字符串表示的变量的类型 2.instanceof instanceof运算符用于判断右边构造函数的原型对象是否在左边对象的原型链上 let arr[]let obj{}let datenew Dateconsole.log(arr instanceof Array)console.log(arr instanceof Object)conso…...
传统数仓和clickhouse对比
背景 传统数仓一般都是HiveSparkSql作为代表,不过也包括Kylin等,而clickhouse是实时OLAP的代表,我们简单看下他们的对比 传统数仓和clickhouse对比 HiveSparkSQL的传统数仓: 1.数据更新速度慢,由于传统数仓一般都是…...
burpsuite的大名早有耳闻,近日得见尊荣,倍感荣幸
问题: burpsuite中文乱码何解? burpsuite 与君初相识,犹如故人归。 burpsuite早有耳闻,近日得见真容,果然非同凡响。 Burp Suite is a comprehensive suite of tools for web application security testing. burp …...
Xshell连接VMware虚拟机中的CentOS
Xshell连接VMware虚拟机中的CentOShttps://www.cnblogs.com/niuben/p/13157291.html 步骤: 1. 检查Linux虚拟机的网络连接模式,确保它是NAT模式。(由于只在本机进行连接,所以没有选择桥接模式。当然,桥接模式的配置会…...
JVM类加载的过程和JVM垃圾回收机制
文章目录 一、JVM类加载的过程1.1类加载的基本流程1.1.1加载1.1.2验证1.1.3准备1.1.4解析1.1.5初始化 1.2双亲委派模型 二、JVM垃圾回收机制2.1找到垃圾2.1.1引用计数(比如Python,PHP中用到)2.1.2可达性分析(比如Java中用到) 2.2释放垃圾2.2.1标记清除2.2.2复制算法…...
【git error|SourceTree】error: bad signature 0x00000000 fatal: index file corrupt
报错 error: bad signature 0x00000000 fatal: index file corrupt 场景 在使用git add . 提交代码到缓冲区时或使用SourceTree时电脑宕机,重启后再次提交代码会出现该提示 原因分析 .git目录下的index文件损坏 解决方式 //删除索引文件 rm -f .git/index //回…...
读书笔记:《宽客人生:依曼纽尔·德曼》
金融工程,也叫数量金融,洞察了证券价值与不确定性之间的关系。 布莱克-斯科尔斯模型可以告诉我们如何利用标的股票来复制期权,以及复制期权的成本,做市商利用此来复制期权,以规避无法从其他人那里购买合适价格的期权的…...
车载通信架构 —— 传统车内通信网络LIN总线(低成本覆盖低速场景)
车载通信架构 —— 传统车内通信网络LIN总线(低成本覆盖低速场景) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是…...
单例模式与多线程
目录 前言 正文 1.立即加载/饿汉模式 2.延迟加载/懒汉模式 1.延迟加载/懒汉模式解析 2.延迟加载/懒汉模式的缺点 3.延迟加载/懒汉模式的解决方案 (1)声明 synchronized 关键字 (2)尝试同步代码块 (3&am…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...
rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
