git pull提示"error: The following untracked working tree files would be overwritten by merge"

问题描述

仓库git pull提示存在untracked文件导致异常

日志

1
2

[root@ocr001 ocrmaterial]# git pull -f Updating edfe720..e694614 error: The following untracked working tree files would be overwritten by merge: 2100/rz_less/166265455485003/6-10_10.png 2100/rz_less/166265455485003/6-11_2.png

分析
这个报错信息说明你本地有一些 未被 git 跟踪的文件(untracked files),但是远端仓库在同样的路径下也存在同名文件。
如果直接 git pull,这些本地未跟踪文件会被覆盖,Git 为了保护数据就拒绝合并了。


解决方式

方案 1:确认这些文件不需要,直接丢弃

1
2
git clean -fd
git pull -f
  • git clean -fd 会删除所有未跟踪文件和目录(危险操作,执行前确认无用文件)。
  • 然后再执行 git pull -f
#或者直接删除本地仓库对应的目录,在git pull远程拉取文件到本地

rm -rf xxxx/
git pull

方案 2:把本地未跟踪文件备份

1
2
3
mkdir ~/git_untracked_backup
git ls-files --others --exclude-standard -z | xargs -0 -I {} mv {} ~/git_untracked_backup/
git pull -f
  • 这样会先把未跟踪的文件移到一个备份目录,避免丢失。

方案 3:如果这些文件你想加入版本控制

1
2
3
git add .
git commit -m "save local untracked files"
git pull --rebase
  • 先把本地文件提交,再 git pull --rebase
  • 这样会把你的文件保留下来,但可能需要解决冲突。

👉 推荐做法:

  • 如果只是生成的临时文件,用 方案 1
  • 如果是需要留存的数据文件,用 方案 2
  • 如果确实想让这些文件进仓库,用 方案 3