发现问题

我平时在GitHub的hexo分支中备份博客源码,但某一天突然发现,主题文件夹只有第一次使用时备份成功了。也就是说,之后我改动过多次主题配置文件_config.yml并 push 到GitHub,全没有push更新成功过…

啊这…那我万一哪一天本地文件因不可抗力损毁且无法恢复,那我备份了那么多次备份个寂寞啊。

并且我发现GitHub上我备份的博客源码中,主题文件夹并不能点开,而是以图中这样的形式备份的:

GitHub第一次备份的主题文件夹截图.png

分析问题

经过查找其他博文与询问主题作者寻找帮助,我才了解到,无法点击GitHub的主题文件夹并且后续无法push备份修改过的文件夹的原因是:
本地 Butterfly 主题文件夹中含有 .git 隐藏文件。

本地butterfly主题文件夹内结构.png

其实如果细心,你会注意到博客根目录下其实也有一个名为.git的灰色隐藏文件。(没看见的请将你电脑的隐藏文件设为显示)

  • 那么 .git 文件是什么呢?
    简单地说,这个目录文件包含了几乎所有 Git 存储和操作的对象,是版本控制工具 Git 在你第一次初始化一个本地仓库时,在当前文件夹生成的一个隐藏文件,我们以后每个版本的作品都是放在了 .git 这个文件夹里。

  • 所以说,这个问题其实是一个正常现象吗?
    是的,当我第一次克隆过来 butterfly 作者的主题文件并应用到自己的 Hexo 博客时,应该已经是这样了,只不过当时没注意这个细节而已。

Butterfly 的作者 Jerry 回答我道:
“这不是很正常么,git 不允许 git 里面包含 git ”

我问道:能否将主题文件夹下的.git文件删除?
“你想上传就删了,但是后续不能通过 git pull 更新”

于是我决定暂时不删除该文件,并参照网上教程成功push了主题文件。

解决问题

  • 1.剪切 themes/主题名/.git 文件夹到其它处,如桌面。

  • 2.从暂存区删除该文件夹
    git rm --cache themes/你的主题文件夹名
    操作后github上的主题文件夹应该会被移除。

  • 3.使用git status查看状态

  • 4.三步走:

  • ->git add .

  • ->git commit -m "你的自定义信息"

  • ->git push

    之前往GitHub上经常push过东西的话应该知道最后一步git push过程中的报错可尝试通过科学上网解决,国内网速太慢可能导致网络链接超时而报错

然后就会发现你的主题文件夹在GitHub上更新成功了
GitHub成功更新的主题文件夹截图.png

  • 5.再移回themes/next/.git文件夹
    便于以后对主题的更新

复盘该问题

我提出该问题的原因是我对 Git 的了解不足,今后一定要抽时间好好学一下 Git 了,感谢 Butterfly 的作者的答复以及帮助到我的所有博客博主,包括但不限于:

CSDN-rm, git rm, git rm –cached 区别与关系

CSDN-Hexo博客开发之——theme主题备份上传失败

博客园-Hexo + Github page博客 themes/next 文件夹因存在.git而无法提交到git的解决办法

另外附上
Git官方文档:
https://git-scm.com/book/zh/v2