git删除已经提交到本地仓库的代码

使用场景如下:在开发工程中第一版编写了一个功能,可在版本迭代的过程中该功能被舍去了,这就意味着该功能的核心代码都要删除,可以该部分代码早已提交到本地仓库了,那么该如何删除本地仓库记录的代码呢?

首先很多人都会想到直接删除本地的代码,在提交,再推送,然而这样行的通吗?

实验

首先将一个项目代码提交到本地仓库,再推送到远程分支,如下图:项目路径是`app/customer/cmd/rpc/internal/logic`包含了如下的文件:

在这里插入图片描述

本地仓库和远程仓库是一致的项目中使用`git ls-files -c`命令查看本地仓库文件打印行数太多就不全部截图了(截取一部分)

在这里插入图片描述
如果只删除工作区文件,如下文件夹中的文件
在这里插入图片描述
就像下图所示,缓存区和本地仓库均还有,当有新代码提交时,只会把新代码merge到该分支上去,那些工作区删除的文件仍然存在。

alt

而且如果使用的jetbrains的ide会发现直接可视化显示了问题,如下

在这里插入图片描述
这些本地删除了的文件编程灰色,仍然存在缓存区,甚至可以再次提交,只是本地没有了该文件无法修改。

那么到底该如何删除呢?

方案

由于缓存区和本地仓库一般是联级操作的,因此只要使用git命令删除本地仓库的内容即可。

  • git git revert切换代码版本实现内容删除

由于git是分布式多分支管理的代码仓库,git实现能够实现本地迭代也能切换不同的版本,git中HEAD指向某个分支,在更新版本是也会设置版本标签。

在这里插入图片描述
如上图所示,将版本回退就可以删除当前版本提交的代码了。要删除某些文件就会退到提交该文件的前一个版本。但是这样面临的问题是许多新增功能的代码与需要删除文件无关的代码也回退了,还需要重新编写再提交,如果代码更新了很多版本了就更麻烦了。(除非重大问题一般不推荐该方法)

  • git reset撤回文件

该方法直接需要git的追踪状态将文件撤回到git add之前的状态,相当于从未提交过一样。

在这里插入图片描述
撤回操作时本地仓库和缓存区是联级的,自动一起撤回了,直接回到了git add之前的状态,本地仓库变成了新的没有任何内容的仓库,缓存区也清空了。现在只需要在文件夹中删除需要不需要的文件即可。再次git add,git commit,此时本地仓库更新完毕了。

在这里插入图片描述
如上图所示,从记录中也能看出最开始提交的文件已经删除,查看本地仓库:

git ls-files -c

在这里插入图片描述
如上图,原来app/customer/cmd/rpc/internal/logic目录下已经变成了全新的内容。

  • git rm --cached删除仓库文件

git rm --cached命令和git reset命令相似,在逻辑上不一样,rm是直接删除指定文件git相关的内容

在这里插入图片描述
通过git rm命令也是将仓库和缓存区指定文件删除,回到未git add的状态。

git rmgit reset是Git中两个不同的命令,它们在操作上有所不同:

  1. git rm是用于将文件从版本控制中删除的命令。它执行两个操作:从本地文件系统中删除文件,并将删除操作记录到Git的版本历史中。这样,文件将不再出现在您的代码库中,并且在提交更改后将不可恢复。您可以使用git rm <文件名>命令指定要删除的文件。

  2. git reset用于撤消提交或将HEAD指向不同的提交。它用于更改当前工作树和暂存区的状态。git reset可以用来撤消提交并丢弃它们的更改。它也可以用来移动分支指针,使其指向不同的提交,从而更改当前的代码库状态。

  3. 如果使用git reset 命令指定一个提交,则会将HEAD指向该提交,并将当前工作树和暂存区恢复为该提交的状态。如果使用git reset --hard 命令指定一个提交,则会将HEAD指向该提交,并完全丢弃当前工作树和暂存区的更改。

总结来说,git rm用于删除文件,而git reset用于撤消或更改提交,并且可以用来移动分支指针。这两个命令在Git中扮演不同的角色,根据您的需求,选择适当的命令来执行所需的操作。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

import有什么用,python中怎么使用import

目录 引言 import的概念 import的作用 import的应用 Python中如何使用import import报错处理 代码示例 注意事项 总结 引言 在Python编程语言中&#xff0c;import是一个关键字&#xff0c;用于将其他模块或库的功能引入当前代码中。import的概念和功能使得Python成为…

避免安装这5种软件,手机广告频繁弹窗且性能下降

在我们使用手机的日常生活中&#xff0c;选择合适的应用软件对于保持良好的使用体验至关重要。然而&#xff0c;有些软件可能会给我们带来不必要的麻烦和困扰。特别是那些频繁弹窗广告、导致手机性能下降的应用程序&#xff0c;我们应该尽量避免安装它们。 首先第一种&#xf…

聚观早报|iPhone 15预计9月22日上市;一加Open渲染图曝光

【聚观365】8月7日消息 iPhone 15预计9月22日上市一加Open渲染图曝光Redmi K60至尊版细节曝光小米14 Pro屏幕细节曝光vivo V3正式发布&#xff0c;执着自研“影像芯片” iPhone 15预计9月22日上市 上周有多位消息人士透露&#xff0c;多家合作的电信运营商已要求员工不要在9月…

编写第一个 React Native 程序

React Native 目录 使用React Native CLI命令创建的目录如下图所示&#xff1a; 重要目录说明 目录说明__tests__存放测试用例的目录.bundle / config配置文件&#xff08;一般不会用到&#xff09;android 和 IOS 文件夹这两个文件夹主要是存放安卓和 ios 相关的配置文件和…

【JAVA】正则表达式是啥?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言正则表达式正则表达式语法正则表达式的特点捕获组实例 前言 如果我们想要判断给定的字符串是否符合正则表达式的过滤逻辑&#xff08;称作“匹配”&#xff09;&#xff0c…

基于EEGLAB的ICA分析

目录 1.ICA原理 2.ICA的实现 3.ICA成分识别 4.ICLabel识别并去除伪迹 5.ICA成分识别练习 1.ICA原理 得到的每一个地形图&#xff0c;实际上就是它的权重谱。 投射&#xff1a;根据原成分恢复原始信号。 选择性投射&#xff1a;去伪。 2.ICA的实现 extended&#xff0c;1&…

网络:从socket编程的角度说明UDP和TCP的关系,http和tcp的区别

尝试从编程的角度解释各种网络协议。 UDP和TCP的关系 从Python的socket编程角度出发&#xff0c;UDP&#xff08;User Datagram Protocol&#xff09;和TCP&#xff08;Transmission Control Protocol&#xff09;是两种不同的传输协议。 TCP是一种面向连接的协议&#xff0c…

el-select 三级联动

一、效果图 二、思路&#xff1a;先请求一级select数据&#xff0c;通过选中的id请求二级数据&#xff0c;以此类推&#xff01; 三、代码 <template><div><el-card><el-form :inline"true"><el-form-item label"一级">&l…

vs导出和导入动态库和静态库

0. 动态库和静态库的区别 静态库和动态库的最大区别是&#xff0c;静态库链接的时候把库直接加载到程序中,而动态库链接的时候&#xff0c;它只是保留接口&#xff0c;将动态库与程序代码独立&#xff0c;这样就可以提高代码的可复用度和降低程序的耦合度。 静态库在程序编译时…

[oeasy]python0081_[趣味拓展]ESC键进化历史_键盘演化过程_ANSI_控制序列_转义序列_CSI

光标位置 回忆上次内容 上次了解了 新的转义模式 \033 逃逸控制字符 escape 这个字符 让字符串 退出标准输出流进行控制信息的设置 可以设置 光标输出的位置 ASR33中的ALT MODE 是 今天的ESC键吗&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#x1f914; 查询文档…

ospf减少LSA更新

实验及实验要求 一、思路 1.根据区域划分IP地址 2.使公网可通---写缺省 3.使R3成为MGRE中心站点&#xff0c;R5、R6、R7为分支站点 4.一个个去配置ospf区域和RIP区域&#xff0c;确保每个区域配置无误 5.区域0要更改OSPF在接口的工作类型为broadcast &#xff0c;并使R3为…

【零基础学Rust | 基础系列 | 数据结构】元组,数组,向量,字符串,结构体

文章标题 简介&#xff1a;一&#xff0c;元组&#xff1a;1&#xff0c;定义元组&#xff1a;2&#xff0c;访问元组元素&#xff1a;3&#xff0c;元组解构&#xff1a;4&#xff0c;元组在函数中的应用&#xff1a; 二&#xff0c;数组&#xff1a;1&#xff0c;数组的声明和…