git rm --cached 命令,最全详细讲解
git rm --cached
是 Git 中的一个命令,用于从版本控制中移除文件,但保留文件在本地工作目录中的副本。这个命令有以下几个关键点:
-
从版本控制中移除:
当你执行git rm --cached <file>
时,Git会将指定的<file>
从当前的索引(也称为暂存区)中删除。这意味着该文件将不再被 Git 跟踪和管理。 -
保留本地文件:
与普通的git rm
命令不同,--cached
选项使得 Git 只是从版本控制中移除文件,而不会从你的本地工作目录中删除实际的文件。因此,即使文件在 Git 中被删除,你仍然可以在你的文件系统中看到并使用它。 -
用途:
这个命令常用于以下几种情况:- 不想跟踪特定的文件或文件夹,例如大型数据文件、自动生成的文件或者敏感信息。
- 已经误将不应该被版本控制的文件添加到了 Git 中,需要将其从版本控制中移除。
- 调整
.gitignore
文件,使得新的忽略规则生效。有时候,即使你在.gitignore
中添加了规则,已经追踪的文件依然会被提交。在这种情况下,你需要先使用git rm --cached
移除这些文件,然后再提交更改。
-
工作流程:
使用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>
添加它们。
举个栗子
修改.gitignore文件
提交更改
后悔了怎么办?
如果你使用了 git rm --cached
命令并遇到了错误,或者你改变了主意不想保留这次更改,你可以通过以下步骤放弃此次更改:
-
检查当前状态:
首先,使用git status
命令来查看你的工作目录和暂存区的状态。这将帮助你了解哪些文件被修改或删除。 -
撤销暂存区的更改:
如果你想撤销对暂存区中文件的更改(包括使用git rm --cached
删除的文件),你可以使用git reset
命令。例如,如果你想恢复所有在暂存区中的更改,可以使用以下命令:git reset
或者,如果你想只恢复某个特定文件的更改,可以使用:
git reset <file>
-
撤销工作目录的更改:
如果你在执行git rm --cached
之后还进行了其他操作,比如修改或删除了文件,这些更改可能已经反映在工作目录中。要撤销这些更改,你可以使用以下命令:git checkout -- <file>
这个命令会将指定文件恢复到最后一次提交时的状态。
-
检查状态确认更改:
在执行上述命令后,再次运行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