git rm --cached 命令如何解决疑难杂症

简介: git rm --cached 命令如何解决疑难杂症

诡异之事年年有,只是今年有点多,在仓库上传到 GitHub 后,偶然在 GitHub 中瞄了一眼,我的天?这个图标不像文件夹啊?这个怎么点不开?git 上传正常啊?本地工作区和暂存区都是干净的了啊?

一、问题描述

本地仓库提交后,GitHub 中某文件夹无法正常点击,内容无法显示。

二、原因分析

经排查,定位到原因:之前仓库中包含了一个特殊的文件夹(此文件夹是另外一个 git 仓库),在执行下面语句时:


git add .

提示仓库中包含其他仓库,需要解决此问题。本人操作是删除掉此文件夹中的 .git 配置目录,然后依次执行以下命令:

git add .
git commit -m 'add the new file'
git push

顺利推送仓库到远程,过程中并无报错。这个过程或许是导致问题的原因。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

三、解决办法

现在问题是本地工作区与暂存区干净如新,远程仓库有问题。该如何解决?这时用到了一个命令:


git rm --cached <dir_name>

我们先来看一下手册:

usage: git rm [<options>] [--] <file>...
    -n, --dry-run         dry run
    -q, --quiet           do not list removed files
    --cached              only remove from the index
    -f, --force           override the up-to-date check
    -r                    allow recursive removal
    --ignore-unmatch      exit with a zero status even if nothing matched

可以看到 --cached 的作用:将文件仅仅从索引中移除,翻译成人能看懂的话便是 「之前已经提交,现在将此目录释放掉,恢复到工作区,未被追踪的状态,即 git add . 命令之前的状态」

我们执行完此命令之后使用如下命令查看所有改变后的文件状态:

git status

发现出问题的目录已经变成了红色未被追踪的状态,此时将出问题的目录中所有包含 git 信息的文件和目录都删除,然后再依次执行命令:

git add .
git commit -m 'add the new file'
git push

去远程仓库中查看后发现问题解决。

四、总结

当出现未知问题致使远程仓库同预期结果不一致时,本地可以将问题目录恢复到未被追踪状态,核查完问题之后再次提交最新结果,操作步骤如下:

1.删除缓存,释放目录,恢复到未被追踪状态:


git rm --cached <dir_name>

2.依次执行如下操作再次提交:

git add .
git commit -m 'Information you need to submit'
git push

3.完美解决问题。

相关文章
|
3月前
|
存储 开发工具 git
|
3月前
|
开发工具 git
【GIT 第二篇章】GIT常用命令
Git常用命令涵盖初始化、状态管理、提交、分支处理、远程操作等关键流程。`git init`启动本地仓库,`git clone`下载远程仓库。通过`git status`和`git diff`检查工作状态与差异。利用`git add`暂存文件,`git commit`保存更改。借助`git branch`、`git checkout`、`git merge`和`git rebase`管理分支。使用`git fetch`、`git pull`和`git push`同步远程仓库。通过`git reset`、`git revert`和`git checkout`实现版本回退。
63 0
|
20天前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
72 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
1天前
|
开发工具 git 开发者
|
1天前
|
开发工具 git 开发者
提升Git效率:掌握这5个高级命令
【10月更文挑战第17天】
7 0
|
2月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
无论团队项目还是个人开发,掌握 Git 命令都是必备技能。本文介绍 Git 的基本概念与命令,如初始化仓库 (`git init`)、添加文件 (`git add`)、提交更改 (`git commit`)、检出分支 (`git checkout`)、合并分支 (`git merge`) 等,还分享了高级技巧如查看差异 (`git diff`)、撤销提交 (`git revert`)、修复合并冲突 (`git mergetool`) 和使用别名简化命令 (`git config --global alias.ci commit`)。
|
2月前
|
机器学习/深度学习 Shell 开发工具
Python使用管道执行git命令报错|4-7
Python使用管道执行git命令报错|4-7
|
2月前
|
存储 Linux 开发工具
Git基础命令,分支,标签的使用【快速入门Git】
本文详细介绍了Git版本控制系统的基础概念和常用命令,包括工作区、暂存区和版本库的区别,文件状态的变化,以及如何进行文件的添加、提交、查看状态、重命名、删除、查看提交历史、远程仓库操作和分支管理,还涉及了Git标签的创建和删除,旨在帮助读者快速入门Git。
Git基础命令,分支,标签的使用【快速入门Git】
|
2月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
本文介绍 Git 的核心概念,如仓库、提交、分支与合并,并提供了常用命令,如初始化仓库 (`git init`)、提交更改 (`git commit -m &quot;Commit message&quot;`)、拉取 (`git pull`) 和推送 (`git push`) 等。此外,还分享了高级技巧,如撤销提交 (`git revert &lt;commit&gt;`)、交互式暂存 (`git add -i`) 和使用别名简化命令 (`git config --global alias.ci commit`) 等,帮助开发者提升效率。无论是初学者还是资深开发者,都能从中受益。
|
2月前
|
开发工具 git 开发者
GIT命令的综合总结
Git的学习曲线可能比较陡峭,但熟练掌握这些命令后,你将能够更加高效地管理和协作你的项目。希望这份指南能帮助你成为Git的高效用户。
47 7