记 git 重命名文件不生效问题一例

问题描述

我在编写博客过程中,觉得之前markdown起的名字不好,于是改了新的名字。

在本地更名结果正常,但是推送到远端构建后出现了重复的情况。

更名示意图如下:

gitea文件列表截图

推送到服务器自动构建后,出现如下情况:

重复文章截图

问题排查

  1. 首先怀疑是浏览器缓存问题,但是删除缓存后该现象仍然不消失。
  2. 怀疑是服务器有构建缓存,本地推送一个空提交触发CI/CD后,该现象仍然不消失。
  3. 怀疑是服务器构建时未删除旧文件,登录到服务器查看后发现是指定了 --cleanDestinationDir 参数的。
  4. 仍然怀疑服务器缓存问题,手动将构建目录删除后,重新推送空提交触发CI/CD,问题依旧。
  5. 登录到远程gitea平台,查看远端文件,发现上面三个文件赫然同时出现,问题找到,是删除操作没有推送导致。

未暂存删除操作

问题复现

  1. 我平时推送代码一般是使用 git add . 一次性推送,少数情况下 add 文件夹 进行推送,没出过问题。
  2. 这次改动的文件比较多,我只暂存(add)了我更改的文件,然后推送。但是我中间有一个更名操作,而我只暂存了更名后的文件,没有暂存原文件名,这导致重命名操作变成了新建文件操作,故出现重复情况。

即:git将重命名操作识别为删除和新建两个操作,而我只暂存了新建操作。

1
2
3
# rename a.txt to b.txt
git add b.txt
# 这将导致 a.txt 和 b.txt 在HEAD中同时存在。
updatedupdated2026-02-052026-02-05