BOSh
文章28
标签12
分类5

一言

文章归档

解决Git 典型的子模块冲突

解决Git 典型的子模块冲突

Git 陷入了一个典型的子模块冲突。

简单来说:themes/hugo-theme-m10c 文件夹目前被 Git 视为一个“独立的项目”。因为你修改了配色的 config 或者主题代码,Git 发现这个子项目有改动,但它没有权限替你把这些改动提交到别人的仓库里,同时也导致你的主项目(my-hugo-blog)被卡住。

请按照以下步骤,用最彻底的**“合并法”**解决:

第一步:强行“吞并”主题文件夹
我们要让 Git 停止把这个主题当成子模块,而是把它当成你自己的普通文件夹。

在你的电脑终端输入这三行命令:

Bash

1. 删除子模块的索引(注意:末尾不要带斜杠 /)

git rm -r –cached themes/hugo-theme-m10c

2. 删除那个该死的 .git 标识(这是让 Git 误以为它是子项目的根源)

Windows 用户执行:

rmdir /s /q themes\hugo-theme-m10c.git

Mac/Linux 用户执行:

rm -rf themes/hugo-theme-m10c/.git

3. 此时再添加,Git 就会把它当成普通文件夹处理了

git add .
第二步:提交并强制推送
现在 Git 应该能识别到你的所有改动了(包括文章和主题配色)。

Bash

1. 再次尝试提交

git commit -m “彻底修复主题冲突并发布文章”

2. 推送到 GitHub

git push origin main
第三步:去 Vercel 检查
这次 git push 成功后,由于你把主题代码直接“背”在了自己的仓库里,Vercel 部署时再也不需要去连接外部子模块,成功率是 100%。

打开你的 GitHub 仓库网页,确认 themes/hugo-theme-m10c 文件夹不再带有一个“白色小箭头”图标。

刷新 Vercel 的 Deployments 页面,你应该能看到一个正在进行的 Building。

为什么之前一直失败?
因为只要 themes/hugo-theme-m10c 文件夹里存在一个 .git 文件夹,主项目的 git add . 就无法跨越它去捕捉里面的改动。这就像你在一个保险柜里又放了一个保险柜,主项目的钥匙打不开里面的锁。

本文作者:BOSh
本文链接:http://zsb.hidns.co/2025/12/25/%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%89%E7%AF%87%E5%8D%9A%E5%AE%A2/
版权声明:本文由BoSh发布,部分内容来源于网络。