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

发布时间 2023-12-29 14:41:49作者: 刘俊涛的博客

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.

文章来源:刘俊涛的博客


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