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

git-svn克隆后.git文件夹位置异常,如何调整至项目目录内?

SVN转Git迁移:调整.git目录位置的两种方案

一、直接克隆生成正确的目录结构

你的问题根源是git svn clone命令未正确指定SVN仓库的trunk路径,且目标目录参数的使用导致项目文件被放在额外子文件夹里。调整命令即可让.git直接位于项目文件同级:

正确克隆命令(包含所有需要的分支和trunk)

git svn clone \
  --no-minimize-url \
  --authors-file=../authors-transform.txt \
  --trunk=APP/trunk \
  --branches=APP/branches/dev \
  --branches=APP/branches/uat \
  https://the.org/svn/myProject \
  myGitProject
  • 必须明确指定--trunk=APP/trunk:默认git-svn会找根目录下的trunk,你的SVN trunk在APP/trunk,不指定会导致结构错乱
  • 同时列出所有需要迁移的分支(dev和uat),确保分支历史被完整迁移
  • 执行后,myGitProject目录内会同时包含.git文件夹和项目文件(如src),结构符合预期

分步克隆方式(更直观)

# 创建并进入目标目录
mkdir myGitProject && cd myGitProject
# 克隆到当前目录(用.指定)
git svn clone \
  --no-minimize-url \
  --authors-file=../authors-transform.txt \
  --trunk=APP/trunk \
  --branches=APP/branches/dev \
  --branches=APP/branches/uat \
  https://the.org/svn/myProject \
  .

这种方式明确将仓库内容克隆到当前目录,避免路径歧义。

二、已克隆出错误结构后的调整步骤

如果已经生成了.git与MyProject同级的结构,可按以下步骤修正后再推送远程:

  1. 移动.git目录到项目文件夹内
# 假设当前在包含.git和MyProject的父目录
mv .git MyProject/
  1. 修复Git工作区关联
cd MyProject
# 重置Git状态,让其重新识别当前目录的文件
git reset --hard
  1. 验证结构
    执行ls -la,应能看到.git文件夹和项目文件(如src)处于同一目录下。

  2. 推送至远程Git仓库

# 添加远程仓库地址
git remote add origin <你的远程Git仓库URL>
# 推送所有分支和标签
git push -u origin --all
git push -u origin --tags

注意事项

  • 若SVN仓库存在tags目录,需在克隆命令中添加--tags=APP/tags参数,确保标签历史也被迁移
  • 迁移完成后,可删除原SVN克隆的临时文件,仅保留调整后的Git仓库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:52:36