首页 > 其他分享 >git rm --cached 命令,最全详细讲解

git rm --cached 命令,最全详细讲解

时间:2023-12-29 14:44:42浏览次数:27  
标签:文件 git 更改 -- cached rm

git rm --cached 命令,最全详细讲解

git rm --cached 是 Git 中的一个命令,用于从版本控制中移除文件,但保留文件在本地工作目录中的副本。这个命令有以下几个关键点:

  1. 从版本控制中移除
    当你执行 git rm --cached <file> 时,Git会将指定的 <file> 从当前的索引(也称为暂存区)中删除。这意味着该文件将不再被 Git 跟踪和管理

  2. 保留本地文件
    与普通的 git rm 命令不同,--cached 选项使得 Git 只是从版本控制中移除文件,而不会从你的本地工作目录中删除实际的文件。因此,即使文件在 Git 中被删除,你仍然可以在你的文件系统中看到并使用它。

  3. 用途
    这个命令常用于以下几种情况:

    • 不想跟踪特定的文件或文件夹,例如大型数据文件、自动生成的文件或者敏感信息。
    • 已经误将不应该被版本控制的文件添加到了 Git 中,需要将其从版本控制中移除
    • 调整 .gitignore 文件,使得新的忽略规则生效。有时候,即使你在.gitignore中添加了规则,已经追踪的文件依然会被提交。在这种情况下,你需要先使用 git rm --cached 移除这些文件,然后再提交更改。
  4. 工作流程
    使用 git rm --cached 的典型工作流程如下:

    • 确定你要从版本控制中移除的文件。
    • 执行 git rm --cached <file>
    • 如果需要,更新你的 .gitignore 文件以确保 Git 不会在将来重新跟踪这个文件。
    • 提交更改:git commit -m "Remove <file> from version control but keep locally"
    • 推送更改到远程仓库(如果适用):git push.

注意,执行 git rm --cached 后,虽然文件在本地工作目录中仍然存在,但在下次执行 git add .git commit 时,这些文件不会被包含在内。如果你想再次将这些文件添加到版本控制中,你需要先移除 .gitignore 中的相关规则(如果有的话),然后使用 git add <file> 添加它们。

举个栗子

image-20231229143500165

image-20231229143515165

修改.gitignore文件

image-20231229143602274

image-20231229143539745

提交更改

image-20231229143629535

后悔了怎么办?

如果你使用了 git rm --cached 命令并遇到了错误,或者你改变了主意不想保留这次更改,你可以通过以下步骤放弃此次更改:

  1. 检查当前状态
    首先,使用 git status 命令来查看你的工作目录和暂存区的状态。这将帮助你了解哪些文件被修改或删除。

  2. 撤销暂存区的更改
    如果你想撤销对暂存区中文件的更改(包括使用 git rm --cached 删除的文件),你可以使用 git reset 命令。例如,如果你想恢复所有在暂存区中的更改,可以使用以下命令:

    git reset
    

    或者,如果你想只恢复某个特定文件的更改,可以使用:

    git reset <file>
    
  3. 撤销工作目录的更改
    如果你在执行 git rm --cached 之后还进行了其他操作,比如修改或删除了文件,这些更改可能已经反映在工作目录中。要撤销这些更改,你可以使用以下命令:

    git checkout -- <file>
    

    这个命令会将指定文件恢复到最后一次提交时的状态。

  4. 检查状态确认更改
    在执行上述命令后,再次运行 git status 来确认你的工作目录和暂存区是否回到了你想要的状态。

通过以上步骤,你应该能够放弃使用 git rm --cached 命令进行的更改,并恢复到原来的状态。请注意,这些操作不会影响已经提交的历史记录,只会改变你本地的工作目录和暂存区的状态。



欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。

公众号

Don’t reinvent the wheel, library code is there to help.

文章来源:刘俊涛的博客


若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)

标签:文件,git,更改,--,cached,rm
From: https://www.cnblogs.com/lovebing/p/17934843.html

相关文章

  • 28.headless无头浏览器使用
    seleniumoption常用操作目录 Options概述添加启动配置Options概述 是一个配置浏览器启动的选项类,用于自定义和配置Driver会话常见使用场景:设置无头模式:不会显示调用浏览器,避免人为干扰的问题。设置调试模式:调试自动化测试代码(浏览器复用)https://......
  • The solution of CF380C
    problem希望这篇题解不要明年才审完。标签:线段树记录\(Lsum_p\)为这个区间有多少个(不能匹配,\(Rsum_p\)为这个区间有多少个)不能匹配。对于叶子结点如果是(那么\(Lsum_p\)为\(1\),否则\(Rsum_p\)为\(1\)。如果不是,那么就有:\[Lsum_p=Lsum_{ls}+Lsum_{rs}......
  • JAVA面向对象程序设计
    第2章:类与对象定义类:在Java中,一个类是创建对象的蓝图或原型。类定义了一组属性(变量)和方法(函数)。-创建类:演示一个简单的Java类的声明,包括类名、属性和方法。```javapublicclassPhone{//属性(Variables)Stringbrand;Stringmodel;intprice;//方法(Methods)voidcall(S......
  • 商业银行数据模型白皮书(2023)
    前沿数据治理是银行业高质量推进数字化转型的重要基础。数据模型建设是推动高质量数据治理体系的核心环节。 目录  CONTENTS前言一、商业银行数据模型概述(一)商业银行业数据模型发展经历四个阶段(二)数据模型具有四大价值二、数据模型建设模式(一)贯彻企业战略—基于企......
  • Vue 倒计时小组件
    商城类应用开发中经常要遇到秒杀价或者到时间点开始优惠,这种业务了逻辑通常需要使用到倒计时功能。 主要使用到setTimeout方法,循环的不断调用清除调用清除,具体代码实现import{cancelRaf,rAF}from'@/utils/raf'import{ref,computed,typeRef}from'vue'//定义一......
  • 26.selenium 多浏览器处理
    目录 多浏览器测试介绍多浏览器测试实现多浏览器测试背景 用户使用的浏览器(firefox,chrome,IE等)web应用应该能在任何浏览器上正常的工作,这样能吸引更多的用户来使用多浏览器测试概述 是跨不同浏览器组合验证网站或web应用程序功能的过程是......
  • 灵汐平台hs100使用
    换源sed-i's/ports.ubuntu.com/mirrors.bfsu.edu.cn/g'/etc/apt/sources.list改ipvim/etc/netplan/01-network-manager-all.yaml内容如下:network:version:2renderer:NetworkManagerethernets:eth0:dhcp4:noaddresses:[192.168......
  • Taurus .Net Core 微服务开源框架:Admin 插件【4-8】 - 配置管理-Mvc【Plugin-Limit 接
    前言:继上篇:Taurus.NetCore微服务开源框架:Admin插件【4-7】-配置管理-Mvc【Plugin-Metric接口调用次数统计】本篇继续介绍下一个内容:1、系统配置节点:Mvc- Plugin-Limit接口访问限制、IP限制、Ack限制:配置界面如下:限制目前提供以下三个类别的限制:1、Rate访......
  • 计算机 各专业目标
    学院各专业人才培养目标(1)计算机科学与技术为适应区域经济社会发展需求,结合我校人才培养的总体目标定位,本专业培养具有良好的科学素质和人文素养,能系统地掌握计算机硬件、软件及其应用的基本理论、基本技能与方法,获得本专业良好的工程应用训练,具有较强的实践动手能力,具有创新意识......
  • Object类12中方法及作用
    Object类12中方法及作用registerNatives()getClass()hashCode()equals()clone()toString()wait()wait(long)wait(longl,inti)notify()notifyAll()finalize()1.registerNatives()privatestaticnativevoidregisterNatives();static{registerNative......