You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何执行git status会生成.git/lfs/tmp空对象?如何完整复制Git仓库?

问题解答

1. 为何git status会生成.git/lfs/tmp下的新文件?

这些文件是Git LFS的临时工作文件,原仓库repo1在之前的LFS操作(比如拉取、推送大文件)过程中,残留了未自动清理的临时缓存文件在.git/lfs/tmp目录下。当你用cp -R复制整个仓库目录时,这些未被Git追踪的临时文件也被一并复制到了test/repo1中。

Git默认不会追踪.git目录下的这类临时文件,所以当你在复制后的仓库执行git status时,这些不属于仓库已追踪范围的文件就会被识别为未追踪的新对象。

2. 如何获得repo1的完全副本?

直接用cp -R复制整个仓库会带上本地临时文件、未清理的状态文件,想要得到干净且完整的仓库副本,推荐以下两种方式:

方式一:使用git clone(最推荐)

如果repo1是合法Git仓库,直接用Git克隆命令生成副本,它会自动过滤本地临时文件,同时完整复制仓库历史和LFS文件:

# 普通克隆
git clone repo1 test/repo1

# 本地克隆(更快,利用硬链接共享对象)
git clone --local repo1 test/repo1

克隆完成后,test/repo1会是一个干净、独立的仓库副本,包含所有已追踪文件和完整Git历史,LFS文件也会被正确拉取(前提是本地已配置Git LFS)。

方式二:清理原仓库后再复制

如果一定要用cp命令,先清理原仓库的临时文件和未追踪内容,再复制:

# 进入原仓库
cd repo1
# 清理Git LFS的临时文件和未使用对象
git lfs prune
# 清理所有未追踪的文件、目录(谨慎使用,会删除未提交的本地修改)
git clean -fd
# 回到上级目录执行复制
cd ..
cp -R repo1 test/

这样复制后的test/repo1就不会包含多余临时文件,和原仓库的已追踪内容完全一致。


内容的提问来源于stack exchange,提问作者chz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 17:20:03