专栏首页小闫笔记git rm --cached 命令如何解决疑难杂症

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

"

经历不是一句鸡汤。说教不过两片嘴唇的触碰,经历确是风雨里的打磨。不经我苦难,莫劝我向善。

—— 小闫同学

"

诡异之事年年有,只是今年有点多,在仓库上传到 GitHub 后,偶然在 GitHub 中瞄了一眼,我的天?这个图标不像文件夹啊?这个怎么点不开?git 上传正常啊?本地工作区和暂存区都是干净的了啊?更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

一、问题描述

本地仓库提交后,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

去远程仓库中查看后发现问题解决。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

四、总结

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

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

git rm --cached <dir_name>

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

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

3.完美解决问题。

本文分享自微信公众号 - 全栈技术精选(Pythonnote),作者:小闫同学啊

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Git推送大文件失败?你晓得如何解决嘛?

    我相信这不是我一个人的经历:傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去...

    小闫同学啊
  • 将本地目录推送到Git远程仓库

    按照上面的操作步骤就可以将本地文件推送到git远程仓库上了,并且可以自己设定不需要上传哪些文件。当然,情况因每人的配置环境或多或少出现问题,此教程只是解决众多问...

    小闫同学啊
  • git add也能出错?

    小闫同学啊
  • 你细品Git分区、配置与日志,不会就不要敲代码了

    曾经听到过这样一句话:不会「git」就不要敲代码了。细细品味确实有其中的道理,可能是当事人代码被强行覆盖后的叹息吧!

    帅地
  • 快速学习Git-远程仓库

    现在我们已经在本地创建了一个Git仓库,又想让其他人来协作开发,此时就可以把本地仓库同步到远程仓库,同时还增加了本地仓库的一个备份。

    cwl_java
  • 搭建Git服务器

    在讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改。

    php007
  • git在github远程仓库的克隆和上传使用教程

    最近公司要做一个资产管理软件后台工程创建出来,用eclipse、用git做一下版本控制。

    麦克劳林
  • git版本超前了N个版本且落后了N个版本的解决办法

    当遇到该问题的时候,一般情况下我们会首先拉取,紧接着就出现了一系列问题………… 其实当输入命令,git pull的时候,会报错,这时瞬间就感到凌乱了&……*%%...

    蓓蕾心晴
  • 使用git自动部署简单网站

    假设你有一个博客,有一台网站服务器(或者很多台作负载均衡的服务器),当你的博客要升级时,你可能要在你自己的电脑上写好代码(可能包括本地调试好),然后提交到git...

    IMWeb前端团队
  • 干货 | git 版本控制初学者指南

    AI 科技评论按,如果你还不熟悉版本控制,现在是开始学习的时候了。这是一份基本的 Git 指南,从 0 开始学习可以打下良好的基础。几乎可以肯定都是,Git 在...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券