🗑️ Git 删除文件夹与同步实战复盘
1. 目标
将本地仓库中的某个特定文件夹(例如 k3s部署)彻底删除,并让远程 GitHub 仓库同步这一变化(即远程仓库中也不再有该文件夹)。
2. 试错与排雷过程(避坑指南)
在成功之前,你经历了两个典型的 Git 状态异常阶段:
-
阶段一:陷入了"MERGING"死循环
- 现象 :执行
git pull时报错Exiting because of unfinished merge,分支名后面带有(main|MERGING)。 - 原因:之前的合并操作出现了冲突,你没有解决冲突就再次尝试拉取代码,导致 Git 处于"半合并"状态,锁住了后续操作。
- 解决 :使用
git merge --abort放弃合并,并用git reset --hard强制让本地代码与远程保持一致,从而退出了合并状态。
- 现象 :执行
-
阶段二:幽灵文件与乱码文件名
- 现象 :执行
git status后,显示"Your branch is up to date",但下方仍有红色字体的modified: "k3s\351\203\250..."。 - 原因:虽然代码逻辑同步了,但本地硬盘上残留了那个文件夹,且因为文件名包含中文,Git 显示了八进制转义字符(乱码)。Git 认为这个文件夹是"未提交的修改"。
- 解决:必须物理删除该文件夹,才能消除这个状态。

- 现象 :执行
3. 最终解决方案(标准作业程序)
要彻底删除文件夹并同步到 GitHub,请严格按照以下四个步骤操作:
第一步:确保环境干净(前置条件)
在进行删除操作前,确保没有报错,且 git status 不提示 MERGING。

git status
# 确保显示 "Your branch is up to date with 'origin/main'"
第二步:物理删除文件夹
由于文件名可能包含中文或特殊字符,推荐使用通配符或强制删除命令。
rm -rf k3s*
# 或者手动在文件管理器中删除该文件夹
第三步:将"删除动作"加入暂存区
Git 需要被告知"这个文件不见了"这一事实。
git add .
# 此时 Git 会记录下删除操作
第四步:提交记录并推送
将这次删除操作写入历史版本,并上传到服务器。
git commit -m "彻底删除 k3s 部署文件夹"
git push
4. 核心原理解析
-
为什么不能只删文件?
你在电脑上删除文件只是修改了"工作区"。Git 的"版本库"还不知道这件事。必须通过
git add(告诉 Git 文件没了)和git commit(Git 正式记录文件没了),最后git push(告诉远程仓库文件也没了),才能完成同步。 -
关于乱码文件名
当你看到
351\203...这种数字时,不要慌张,它只是中文文件名的另一种编码显示方式。只要路径对,直接用rm命令删除即可。
总结流程图
- 同步 :
git pull/git reset --hard(确保环境干净) - 删除 :
rm -rf <文件夹名>(物理删除) - 暂存 :
git add .(告诉 Git 删除了) - 提交 :
git commit -m "..."(记录删除) - 推送 :
git push(同步到 GitHub)