git在工作区和本地库的操作命令

news2024/11/25 22:33:30

 本文介绍一些开发时,常用的在工作区和本地库之间的操作命令


 

一、提交修改内容到 本地库

工作树的修改内容要提交到本地库,首先需要先添加到缓存区stage,在commit到本地库。

# filename就是你修改后需要提交的文件
git add <filename>

# git commit将缓存区的文件一次性提交到本地库

git commit -m '备注'

二、开发了一段时间,想看看修改了那些文件 以及 和本地库的差异(即修改的内容)

你开发了一段时间,可能已经忘记了修改过那几个文件

可以使用 git status 查看工作区和缓存区的内容,即修改过的文件和新增的文件,

也可以使用 git diff 查看工作区和本地库的版本差异(即内容差异,包括修改和新增,删除)

# 查看工作区和缓存区的状态
git status

# 查看指定文件 在工作区和本地库的差异

git diff <filename>

 三、 修改回滚

git是版本控制系统,那么是支持使用指定版本的文件。

场景1: 修改已经提交到了本地库

step1: git log,查看提交历史,版本的历史 或者 git reflog,查看命令历史,有带每个操作命令在哪个版本上(通常用于回滚之后的版本,即你回滚到从前版本后,想要放弃,回到当前版本之后的版本)

git log

想要精简点的提交历史: 加上 参数 --pretty=oneline

git reflog

step2: 回滚版本

这里分为两种情况

第一种是修改内容已经提交到了本地库。 需要从本地库回滚版本。

第二种是修改内容还未提交到本地库,则需要撤销缓存区和工作区的修改内容

想要回滚大版本

他有三种模式 --soft --mixed(默认的模式) 和 --hard。 改变的内容由少到多

--soft模式:

仅仅改变当前HEAD 指针(当前的版本号),工作区和缓存区修改的内容全部保留(即当前修改的内容也全部还在)。

--mixed模式:

默认的参数, 改变当前的HEAD指针,也改变缓存区的修改内容。但是保留了工作区的内容

--hard模式:

HEAD指针,缓存区和工作区全部改变

 --soft的效果演示

 

--mixed效果演示: (放弃缓存区修改内容,保留工作区的修改内容)

 --hard: 效果演示

场景2: 修改未提交到本地库。

则需要回滚两个地方的,一个是缓存区,一个是工作区

1. 放弃缓存区的修改内容:

git reset HEAD <file>

自己的理解,HEAD代表是最新的版本号, reset就是之前演示的, 默认是--mixed,即更改HEAD值和缓存区内容,保留工作区内容。 (但是--soft和--hard 是没办法和文件搭配使用,只能)

演示:

2. 放弃工作区的修改内容

git checkout -- <file> : 丢弃工作区的修改内容,回到本地库或者缓存区的状态。

缓存区有修改优先回滚到缓存区状态,缓存区没有,回滚则回到本地库状态

所以前提是这个文件本地库或缓存区必须有,如果没有,则无法生效。

示例: 在本地库或者缓存区没有的情况下, git checkout -- file 撤销工作区的修改效果

验证场景2.1: 本地库没有,缓存区也没有的情况

演示结果: 撤销失败

验证场景2.2:  本地库没有,缓存区有的情况

演示结果: 撤销成功, 回到缓存区的状态

验证场景2.3:  本地库有,缓存区没有的情况

演示结果:撤销成功,撤销后状态和本地库的状态一致

验证场景2.4:  本地库有文件,缓存区也有该文件。工作区修改后,再撤销

演示结果:撤销成功。撤销后的状态和缓存区一致

总结4个场景结论:

git checkout -- file,是优先对比工作区和缓存区的, 如果缓存区没有内容,则对比工作区和本地库的。

所以修改未提交到本地库的回滚,需要两步

四、 删除本地库文件

方法1: 当成正常的开发

# step1: 在工作树上删除

rm -f <file>

# step2: 添加缓存区

git add <file>

# step3: 提交到本地库

git commit -m

方法2: 直接删除本地库中的文件

git rm <file>

git commit -m '<content>'

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

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

相关文章

unity进阶--json的使用学习笔记

文章目录 unity自带的json使用方法第三方--LitJson的使用第一种使用方式第二种--使用jsonData unity自带的json使用方法 创建数据类 转化成json 解析json 第三方–LitJson的使用 第一种使用方式 数据类 创建和解析 第二种–使用jsonData 创建 解析

奇舞周刊第500期:TQL,巧用 CSS 实现动态线条 Loading 动画

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ TQL&#xff0c;巧用 CSS 实现动态线条 Loading 动画 最近&#xff0c;群里有个很有意思的问题&#xff0c;使用 CSS 如何实现如下 Loading 效果&#xff1a; leaferjs&#xff0c…

docker安装redis启动异常问题

问题描述 启动redis容器报错如下 se > /sys/kernel/mm/transparent_hugepage/enabled as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled (set to madvise or never). 1:M 21 Ju…

Python - Opencv应用实例之树叶自动分割、标签及统计分析系统

Python - Opencv应用实例之树叶自动分割、标签及统计分析系统 本文通过Python+opencv 实现这样的需求:输出位置和角度(x, y, r),并标记出轮廓基于传统图像处理算法实现,算法原理:输入图像 -> 灰度化 -> 二值化 -> 形态学处理 -> 轮廓提取 -> 树叶中心定位 -…

docker系列5:docker安装nginx

传送门 前面介绍了docker的安装&#xff1a;docker系列1&#xff1a;docker安装 还有docker镜像加速器&#xff1a;docker系列2&#xff1a;阿里云镜像加速器 以及docker的基本操作&#xff1a; docker系列3&#xff1a;docker镜像基本命令 以及容器的基本命令&#xff1a;…

DRL(自用)

RL学习算法 基于策略的算法&#xff1a;这是最通用的优化类型。策略将状态映射到操作。学习策略的 RL 代理可以创建从当前状态到目标状态的动作轨迹 REINFORCE 是一种基于策略的算法。基于策略的算法&#xff0c;优势在于它们可以应用于各种强化学习问题&#xff1b;但是其样…

1 js嵌入html使用

1.1 直接在html内部使用js代码 使用script标签&#xff0c;在前后标签内部写的代码即为js代码。 <body><p id"p1">初始段落</p> <!--id是为了定位需要更改内容的标签--><button type"button" onclick"showNum()">…

App测试中ios和Android的区别

1、Android长按home键呼出应用列表和切换应用&#xff0c;然后右滑则终止应用&#xff1b; 2、多分辨率测试&#xff0c;Android端20多种&#xff0c;ios较少&#xff1b; 3、手机操作系统&#xff0c;Android较多&#xff0c;ios较少且不能降级&#xff0c;只能单向升级&…

【Spring MVC】Spring MVC的功能使用和相关注解介绍

Spring MVC主要有三个功能&#xff1a; 连接获取参数输出数据 对于 Spring MVC 来说&#xff0c;掌握了以上 3 个功能就相当于掌握了Spring MVC。 1.连接 连接的功能&#xff1a;将⽤户&#xff08;浏览器&#xff09;和 Java 程序连接起来&#xff0c;也就是访问⼀个地址能…

Docker 续2

Docker 续2 一、Docker 的数据管理1.1 数据卷1.2 数据卷容器 二、容器操作2.1 端口映射2.2 容器互联&#xff08;使用centos镜像&#xff09;2.3 Docker 镜像的创建2.3.1 基于已有镜像创建2.3.2 基于本地模板创建2.3.3 基于Dockerfile创建2.3.3.1 联合文件系统&#xff08;Unio…

【项目 进程5】 2.10 进程间通信简介 2.11匿名管道概述 2.12父子进程通过匿名管道通信

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 2.10 进程间通信简介(IPC iner process communication)Linux进程间通信的方式&#xff08;记&#xff09; 2.11匿名管道概述匿名管道管道的特点&#xff08;记&…

第一天 运维高级 MySQL备份与还原

1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) );CREATE TABLE score ( id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO…

a-tree 实现父级节点禁用,通过子级节点勾选状态控制

a-tree 组件实现折叠选择&#xff1b;使其父级节点禁用&#xff0c;通过子级节点的勾选状态来控制是否勾选&#xff1b;如果子级节点勾选任一个&#xff0c;父级节点就勾选中&#xff0c;如果子级节点全部不勾选则父节点不勾选&#xff0c;否则勾选 &#xff0c;效果如下&#…

Vue中TodoList案例_总结

完整项目&#xff1a; App.vue <template><div id"root"><div class"todo-container"><div class"todo-wrap"><MyHeader :addTodo"addTodo"/><MyList :todos"todos" :checkTodo"che…

LeetCode226. 翻转二叉树

226. 翻转二叉树 文章目录 [226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/)一、题目二、题解方法一&#xff1a;层序遍历迭代方法二&#xff1a;前序遍历(递归)方法三&#xff1a;中序遍历&#xff08;递归&#xff09;方法四&#xff1a;后序遍历&#…

c++ visual studio opencv配置

项目属性表配置方式&#xff1a; 1、新建项目后&#xff0c;在属性管理器中&#xff0c;创建一个项目属性表&#xff1a; 注&#xff1a;根据需求创建。 2、双击项目属性表 依次修改包含目录、库目录、附加包含目录、附加依赖项。 2.1【包含目录】中加入 OpenCV 的 include …

为harbor仓库添加https,新增DigiCert 免费版SSL证书

完成效果&#xff1a; 前言&#xff1a;在本地搭建好docker的镜像仓库harbor后&#xff0c;当我们登录docker login时&#xff0c;会提示证书问题x509: cannot validate certificate 登录本地报错X509 无法登录仓库也无法上传和拉取镜像&#xff0c;虽然有本机的解决方法&…

android studio 新建项目没有R文件

android studio 新建项目没有R文件&#xff0c;处理步骤 1&#xff0c;找一个能打开的项目替换根目录下的settings.gradle 2,改app 目录下的build.gradle文件 3&#xff0c;改gradle版本 4&#xff0c;改AndroidManifest.xml 5&#xff0c;改theme 改为&#xff0c;ok.

gtest测试用例注册及自动化调度机制源代码流程分析

gtest的入门参见&#xff1a; 玩转Google开源C单元测试框架Google Test系列(gtest) gtest源码分析流程参见&#xff1a; gtest流程解析 测试用例注册流程分析要点&#xff1a;TEST_F宏替换、C静态成员的动态初始化。 自动化调度流程分析要点&#xff1a;UnitTest、UnitTestIm…

CRM系统的排名?都有哪些特点?

在当今商业世界中&#xff0c;CRM客户管理系统是每一家企业所必不可少的工具。它们能够帮助企业管理客户信息&#xff0c;跟进销售机会以及提高客户体验。众多的CRM中&#xff0c;哪个CRM性价比高&#xff0c;企业该如何选择&#xff1f; 在比较CRM软件时&#xff0c;除基本功…