Git管理SVN项目

kevin 2025-03-07 16:27

前提条件:

  1. 必须安装带有 git-svn 功能的 Git for Windows
  2. 在官方 Git for Windows 安装包中,默认情况下是包含 git-svn 的。如果您在命令行输入 git svn --version 能够看到正常输出,则说明环境已正确配置。
  3. 如果提示找不到 git svn,需要在安装 Git 时选择安装 “Git SVN” 组件或自行安装 Subversion(可通过 Slik SVN 或其他方式)并确保其在 PATH 中。

  4. 本地若有其他版本的 SVN 客户端(如 TortoiseSVN)

  5. 一般不会与 git svn 冲突,但如果出现冲突,可以在系统环境变量中调整顺序,使 Git 自带的 svn 或安装的 SlikSVN 路径排在前面。

  6. 确保网络和 SVN 访问权限

  7. 需要能正常访问 SVN 仓库地址(可能需要 VPN 或内部网络)。

命令与解释

下面示例中,<SVN_URL> 表示您 SVN 仓库的访问地址,例如 http://example.com/svn/myrepo<CLONE_DIRECTORY> 表示本地目录名称,例如 my-svn-repo。请根据实际情况替换。

1. 克隆 SVN 仓库到本地并初始化为 Git 仓库

git svn clone <SVN_URL> <CLONE_DIRECTORY>
  • 作用
  • 从远程 SVN 仓库拉取所有历史记录。
  • 在本地创建一个含有完整 SVN 提交历史的 Git 仓库。

  • 可选参数

  • -T trunk -b branches -t tags:如果您的 SVN 仓库遵循标准的 trunk/branches/tags 目录结构,可带上此参数让 Git 更好地识别分支结构。
  • --username <username>:如果访问 SVN 需要用户名,可添加该选项。

2. 进入克隆后的目录,查看日志或状态

cd <CLONE_DIRECTORY>
git log
  • 作用
  • cd <CLONE_DIRECTORY> 进入新克隆的仓库目录。
  • git log 可查看已经导入到本地的 SVN 提交日志。

3. 正常使用 Git 管理代码

在此阶段,您已经拥有了一个本地 Git 仓库(背后还映射着 SVN 的信息)。可以像使用普通 Git 仓库一样进行修改并提交:

# 编辑文件后
git add .
git commit -m "Your commit message"
  • 作用
  • git add .:将所有更改添加到暂存区。
  • git commit -m "Your commit message":在本地 Git 中提交更改。

4. (可选)使用 git stash 暂存本地未提交的修改

当您想要从 SVN 拉取最新更新、并确保在执行 rebase 前工作区是干净的,可以先使用 git stash 暂存修改:

git stash
  • 作用
  • 将当前工作区和暂存区中的更改暂存起来,并恢复到干净的工作状态。
  • 后续需要继续这部分修改时,可用 git stash pop 还原。

5. 使用 git svn rebase 拉取 SVN 仓库最新修改

git svn rebase
  • 作用
  • 从 SVN 仓库拉取最新提交,并将本地的 Git 提交在其之上进行 “rebase” 操作。
  • 如果有冲突,需要手动解决,然后继续 git rebase --continue

如您在之前执行了 git stash,在 rebase 成功后,可执行 git stash pop 还原刚才暂存的工作进度。

6. 提交本地改动到 SVN 仓库

git svn dcommit
  • 作用
  • 将本地的 Git 提交记录转化为 SVN 提交,并推送到远程 SVN 仓库。
  • 一旦执行成功,SVN 服务端就会出现对应的提交记录,其他使用纯 SVN 的同事也可见。

7. (若还需推送到 Git 远程仓库)使用 git push

如果您 同时 维护一个远程 Git 仓库(比如 GitHub、GitLab 或公司内部的 Git 服务器),在完成对 SVN 的 dcommit 之后,就可以将本地的更新再推送到 Git 服务器上:

git push origin main
  • 作用
  • 将本地 main 分支上的提交推送到名为 origin 的远程仓库。
  • 此处的远程仓库与 SVN 无关,而是一个纯粹的 Git 仓库。

总结

  • 以上操作在 Windows 11 下是完全可行的,只要确保 Git for Windows 安装包含 git-svn 功能或安装好支持 SVN 的工具链。
  • 核心命令是:
  • git svn clone —— 将 SVN 仓库克隆成本地 Git 仓库
  • git svn rebase —— 从 SVN 同步最新代码
  • git svn dcommit —— 将本地修改提交回 SVN
  • 如果还要同步到 Git 远程分支,则再加上常用的 git push

通过这种方式就可以“一库两用”,既能与 SVN 同事保持同步,也能享受 Git

评论

登录 后发表评论

kevin 104.194.72.155
2025-03-07 16:29
测试一下-.-
admin 91.103.122.102
2025-03-07 16:35
回复 @kevin: 测试失败
kevin 104.194.72.155
2025-03-07 16:37
祛湿是失败了
kevin 104.194.72.155
2025-03-07 16:37
回复 @kevin: 无法多次回复
admin 91.103.122.102
2025-03-07 16:42
《赠瑞创新君·改》 现·DeepSeek- R1 键盘敲落未央星,屏幕映雪鬓渐青。 故障突临如虎啸,漏洞深潜似鲛行。 三更骤雨摧城至,十指惊雷破阵明。 忽见朝阳熔代码,满城霓虹皆姓卿。
kevin 222.174.105.99
2025-03-10 14:53
看看腿