Git的常用命令以及使用场景
文章目录
- 1.前言
- 2.工作区,暂存区,版本库简介
- 3.Git的常用命令
- 4.版本回退
- 5.撤销修改
- 6.删除文件
- 7.总结
1.前言
在学习Git命令之前,需要先了解工作区,暂存区和版本库这三个概念
2.工作区,暂存区,版本库简介
在使用Git进行版本控制时,有三个重要的概念:工作区、暂存区和版本库
- 工作区(Working Directory):工作区是指项目所在的目录,是进行代码编写和修改的地方。在工作区中,可以添加、修改或删除文件。
- 暂存区(Staging Area):暂存区是Git中的一个中间区域,用于临时存放我们修改过的文件。在我们对工作区中的文件进行修改后,需要将修改的文件添加到暂存区,以便在提交时将暂存区的内容添加到版本库中。
- 版本库(Repository):版本库是Git中的核心部分,它保存了项目的所有历史记录和文件状态。版本库分为本地版本库和远程版本库两部分。本地版本库保存在本地计算机上,包括暂存区和分支等信息;远程版本库保存在远程服务器上,用于多人协作开发和代码的备份。
在Git的工作流程中,我们对工作区的文件进行修改后,将修改的文件添加到暂存区,再将暂存区的内容提交到版本库中,形成一个新的版本。这样可以方便地管理代码的修改历史和进行代码的版本控制。
Git的工作流程通常如下:
- 在工作区修改(添加、修改、删除)文件。
- 将修改的文件添加到暂存区,使用
git add命令。 - 将暂存区的文件提交到版本库,使用
git commit命令。 - 将本地提交推送到远程仓库,使用
git push命令
在使用git add提交修改的文件到暂存区时有两种方式:
# 添加指定文件(可以一次添加多个)到git中
git add [文件1] [文件2]...
# 添加当前所有文件到git中
git add .
而在git commit命令时,可以描述当前文件的修改信息
git commit -m "文件描述信息"
3.Git的常用命令
除了上述两个命令,还有一个git log命令,它可以查看每次文件的提交信息
git log --pretty=oneline
Git 追踪管理的其实是修改操作,而不是文件
git status
这个命令用于查看Git仓库当前状态,他会列出从上次提交后暂存区中修改的文件
git diff [文件]
这个命令用于查看暂存区和工作区之间的文件差异
4.版本回退
对于文件,我们可能会修改很多次.如果对当前修改的效果不满意,就可以使用版本回退,回退到以前的版本,回到之前的版本后,还可以回到最新版本
命令如下:
git reset [--soft / --mixed / --hard] [HEAD]
版本回退本质上回退的是版本库的内容
如果想要工作区和暂存区的内容也会退,执行git reset可以选择不同的选项
| 选项 | 工作区 | 暂存区 | 版本库 |
|---|---|---|---|
| –soft | 不回退 | 不回退 | 回退 |
| –mixed(默认选项) | 不回退 | 回退 | 回退 |
| –hard | 回退 | 回退 | 回退 |
注: --hard选项要慎用!
这个 HEAD 就是想要回退的版本
可以使用git log --pretty=oneline命令进行查看

我这里提交了两次,就会显示两次的提交信息
前面一串数字+英文的组合 是版本,而后面的add1和add2是文件的描述信息
如果回退后想要回到会退前的版本,也可以使用此命令回到最新的版本.因为打印过版本信息, 把 HEAD 改成最新的即可
5.撤销修改
撤销修改操作分为三种情况: 1. 只撤销工作区文件修改的操作 2. 撤销工作区和暂存区文件修改的操作 3. 撤销在工作区,暂存区和版本库都修改的操作
如果只撤销工作区文件修改的操作
- 手动进行撤销,不推荐,容易出错
- 使用 git checkout 命令,如下:
git checkout -- [文件]
如果撤销工作区和暂存区文件修改的操作,可以使用版本回退命令
git reset --hard [HEAD]
--hard 选项可以回退工作区,暂存区和版本库的内容
如果使用--mixed选项也是可以的,这个选项可以回退暂存区和版本库的内容.此时就只剩下工作区的内容需要撤销修改了. 就是上述如果只撤销工作区文件修改的操作的场景.
如果撤销在工作区,暂存区和版本库都修改的操作
- 注意这里有个前提条件,是在commit操作之后,没有进行push操作将文件上推送到远程仓库
撤销的主要目的,也是为了不影响远程仓库中的代码
有了上述的前提条件后,可以使用版本回退进行撤销修改
git reset --hard [HEAD]
# HEAD 代表当前版本
# HEAD^ 表示上一个版本
6.删除文件
这里的删除文件指的是删除版本库中的文件
大致可以分为三步:
- 首先使用
rm命令把工作区中的文件进行删除 - 使用
git add命令将刚才删除的文件提交到暂存库 - 使用
git commit命令提交到版本库即可
可以使用git rm命令简化操作,直接将文件从暂存区中删除,后续直接进行git commit命令即可
7.总结
以上就是一些Git的常用命令和使用场景, 要根据当前的场景和需求使用合适的命令进行执行

相关文章:
Git的常用命令以及使用场景
文章目录 1.前言2.工作区,暂存区,版本库简介3.Git的常用命令4.版本回退5.撤销修改6.删除文件7.总结 1.前言 在学习Git命令之前,需要先了解工作区,暂存区和版本库这三个概念 2.工作区,暂存区,版本库简介 在使用Git进行版本控制时,有三个重要的概念:工作…...
tcp keepalive
tcp keepalive用于检查两者之间的链路是否正常,或防止链路断开。 一旦建立了TCP连接,该连接被定义为有效,直到一方关闭它。一旦连接进入连接状态,它将无限期地保持连接状态。但实际上,这种联系不会无限期地持续下去。如…...
PP-Matting: AI高精度图像前景Matting,让抠图轻而易举
分割和Matting的一个重要区别是:分割返回的是像素分类标签,其结果是整型数据;而Matting返回的是属于前景或背景的概率P,从而在前景与背景交互区域产生渐变的效果,使得抠图更加自然。Matting分割模型训练完成后,对于原始图像每个位置上的像素,都将生成一个表示其前景透明…...
VUE3-01
1.选项式和组合式 选项式API:按照作用组织代码 组合式API:按照功能组织代码 2.<script setup> <template><div class"about"><h1>{{name}}</h1><button click"sayHello">测试</button>…...
分库分表之基于Shardingjdbc+docker+mysql主从架构实现读写分离(二)
说明:如果实现了docker部署mysql并完成主从复制的话再继续,本篇文章主要说明springboot配置实现Shardingjdbc进行读写分离操作。 如果没实现docker部署mysql实现主从架构的话点击我 Shardingjdbc配置介绍(版本:5.3.2)…...
Python 进阶(四):日期和时间(time、datetime、calendar 模块)
❤️ 博客主页:水滴技术 🌸 订阅专栏:Python 入门核心技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 文章目录 1. time模块1.1 获取当前时间1.2 时间休眠1.3 格式化时间 2. datetime模块2.1 获取当前…...
Transformer背景介绍
目录 Transformer的诞生Transformer的优势Transformer的市场 Transformer的诞生 论文地址 Transformer的优势 Transformer的市场...
深入理解BeanDefinition和Spring Beans
深入理解BeanDefinition和Spring Beans 引言 在Spring框架中,BeanDefinition和Spring Beans是非常重要的概念。BeanDefinition定义了Spring Bean的元数据,而Spring Beans是应用程序中的对象实例。理解BeanDefinition和Spring Beans的概念和使用方法对于…...
实验六 调度器-实验部分
目录 一、知识点 1.进程调度器设计的目标 1.1.进程的生命周期 1.2.用户进程创建与内核进程创建 1.3.进程调度器的设计目标 2.ucore 调度器框架 2.1.调度初始化 2.2.调度过程 2.2.1.调度整体流程 2.2.2.设计考虑要点 2.2.3.数据结构 2.2.4.调度框架应与调度算法无关…...
基于飞桨paddle波士顿房价预测练习模型测试代码
基于飞桨paddle波士顿房价预测练习模型测试代码 导入基础库 #paddle:飞桨的主库,paddle 根目录下保留了常用API的别名,当前包括:paddle.tensor、paddle.framework、paddle.device目录下的所有API; import paddle #Lin…...
只会“点点点”,凭什么让开发看的起你?
众所周知,如今无论是大厂还是中小厂,自动化测试基本是标配了,毕竟像双 11、618 这种活动中庞大繁杂的系统,以及多端发布、多版本、机型发布等需求,但只会“写一些自动化脚本”很难胜任。这一点在招聘要求中就能看出来。…...
35.图片幻灯片
图片幻灯片 html部分 <div class"carousel"><div class"image-container"><img src"./static/20180529205331_yhGyf.jpeg" alt"" srcset""><img src"./static/20190214214253_hsjqw.webp"…...
CentOS7系统Nvidia Docker容器基于TensorFlow2.12测试GPU
CentOS7系统Nvidia Docker容器基于TensorFlow1.15测试GPU 参考我的另一篇博客 1. 安装NVIDIA-Docker的Tensorflow2.12.0版本 1. 版本依赖对应关系:从源代码构建 | TensorFlow GPU 版本Python 版本编译器构建工具cuDNNCUDAtensorflow-2.6.03.6-3.9GCC 7.3.1Ba…...
Go 下载安装教程
1. 下载地址:The Go Programming Language (google.cn) 2. 下载安装包 3. 安装 (1)下一步 (2)同意 (3)修改安装路径,如果不修改,直接下一步 更改后,点击下一…...
InnoDB数据存储结构
一. InnoDB的数据存储结构:页 索引是在存储引擎中实现的,MySQL服务器上的存储引擎负责对表中数据的读取和写入工作。不同存储引擎中存放的格式一般不同的,甚至有的存储引擎比如Memory都不用磁盘来存储数据,这里讲讲InooDB存储引擎…...
基于ts的浏览器缓存工具封装(含源码)
cache.ts缓存工具 浏览器缓存工具封装实现使用方法示例代码 浏览器缓存工具封装 在前端开发中,经常会遇到需要缓存数据的情况,例如保存用户的登录状态、缓存部分页面数据等 但有时候需要缓存一些复杂的对象,例如用户信息对象、设置配置等。…...
GIT涵盖工作中用的相关指令
git安装一直默认点击下去,安装完成,右键会看见gitBash git --version 查看git安装的版本 使用git前配置git git config --global user.name 提交人姓名 git config --global user.email 提交人邮箱 git config --list 查看git配置信息 使用git中配置…...
【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码(一)
系列文章 【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码(一) 【如何训练一个中英翻译模型】LSTM机器翻译模型训练与保存(二) 【如何训练一个中英翻译模型】LSTM机器翻译模型部署(三) 【如何训…...
[JAVAee]文件操作-IO
本文章讲述了通过java对文件进行IO操作 IO:input/output,输入/输出. 建议配合文章末尾实例食用 目录 文件 文件的管理 文件的路径 文件的分类 文件系统的操作 File类的构造方法 File的常用方法 文件内容的读写 FileInputStream读取文件 构造方法 常用方法 Scan…...
【数据集】3小时尺度降水数据集-MSWEPV2
1 MSWEP V2 precipitation product 官网-MSWEP V2降水产品 参考...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
