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

如何将Git指定修订版本检出到新目录且不修改原仓库?

解答

不存在你举例的git checkout --into-new-directory /tmp/bar 123这种内置Git命令,但可以用git archive实现完全符合要求的效果,不会修改原仓库的任何内容,新目录也不会包含.git文件夹。

操作命令

首先如果目标目录还没创建,先建目录:

mkdir -p /tmp/bar

之后进入原仓库路径执行导出:

cd /myrepos/foo
git archive 123 | tar -x -C /tmp/bar

执行完之后/tmp/bar下就是修订版本123对应的完整代码树。

原理说明

  • git archive 123会直接从Git仓库的对象数据库中读取提交123对应的完整文件快照,打包成tar格式输出,整个过程不会触碰原仓库的工作区文件,也不会修改.git目录下的任何内容。
  • 管道符后的tar命令会把收到的快照包直接解压到指定的/tmp/bar路径,解压出来的只有纯代码文件,不会携带任何Git仓库相关的元数据,自然不会有.git文件夹。

避坑提示

不要用git worktree add实现这个需求:worktree会在新目录生成和原仓库关联的Git元数据文件,不符合新目录无Git相关文件的要求,操作不当还可能改动原仓库的分支状态。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:24:34