如何把 Git 仓库克隆到指定目录
克隆到指定目录:git clone <仓库地址> <目录名>;克隆到当前目录(已存在的空目录)用 git clone <地址> .(注意句点)。目标目录必须不存在或为空。
在 clone 命令末尾加目录名即可:git clone <仓库地址> my-folder,仓库内容会进 my-folder 而不是默认的仓库名目录。想直接克隆进当前所在的空目录,用句点:git clone <仓库地址> .
用法
git clone https://github.com/org/repo.git my-folder # 指定目录名
git clone https://github.com/org/repo.git . # 克隆进当前空目录
git clone https://github.com/org/repo.git /opt/apps/api # 绝对路径
约束
- 目标目录不存在 → Git 会创建它;
- 目标目录存在但为空 → 允许;
- 目标目录非空 → 报错
destination path already exists and is not an empty directory。
非空目录先完整备份并确认不是已有仓库,再考虑初始化/抓取;这不是安全的自动合并本地文件方案。示例要求 origin/main 存在且本地没有冲突分支:
git init .
git remote add origin <仓库地址>
git fetch
git checkout -t origin/main
常用组合选项
git clone --depth 1 <地址> dir # 浅克隆默认分支的一层提交历史;它仍是仓库
git clone -b develop <地址> dir # 克隆指定分支
git clone --recursive <地址> dir # 连子模块一起
常见问题(FAQ)
Q:克隆错了目录怎么补救?
普通自包含克隆(含 .git)可直接 mv my-folder correct-folder 移动;separate-git-dir、worktree、子模块或绝对路径配置需另外修复关联,不能一概直接移动。
Q:同一仓库能克隆到多个目录吗?
可以,各自独立工作互不干扰(worktree 是更省磁盘的替代:git worktree add ../dir2 分支)。
Q:克隆进当前目录提示非空但我要保留现有文件?
用上面的 init+fetch 方案。checkout 通常会保护有冲突的未跟踪文件,但被忽略的未跟踪文件可能被覆盖;先外部备份,逐项核对,不能依赖冲突检测保护所有本地文件。