用于将本地目录同步到指定SVN仓库。
无需全局安装,直接使用 npx:
npx dirfly [localPath] <repoUrl> [repoSubDir]| 参数 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|
[localPath] |
可选 | 当前工作目录 (cwd) |
本地目录路径,可以是相对或绝对路径 |
<repoUrl> |
必填 | — | 仓库地址,例如 https://github.com/user/repo.git |
[repoSubDir] |
可选 | 本地目录名 | 仓库内的目标子目录名称,不指定时自动使用本地目录名 |
cd ./my-project
npx dirfly svn+ssh://github.com/user/repo- 使用当前目录作为
[localPath] - 仓库子目录默认使用
my-project
npx dirfly ./dist svn+ssh://github.com/user/repo[localPath]=./dist[repoSubDir]未指定,默认使用dist
npx dirfly ./dist svn+ssh://github.com/user/repo frontend[localPath]=./dist[repoSubDir]=frontend
本工具依赖 SVN 命令行工具。可以在下面的页面查找或下载适合您平台的 SVN 客户端:
- https://tortoisesvn.net/downloads.zh.html — 在该页面可以直接下载适用于不同系统架构的安装包(例如 32-bit、64-bit、ARM64)
- macOS / Linux:推荐通过包管理器安装
subversion(例如 macOS 使用brew install subversion),或查看 Apache Subversion 官方包列表:https://subversion.apache.org/packages.html
安装完成后,请在终端中确认 svn 可用:
svn --version下面列出了一些可以托管 SVN 仓库或提供 SVN 服务的平台供参考:
- 国际:SourceForge https://sourceforge.net
- gitee.com : 支持git SVN 二合一仓库
- svnbucket(https://svnbucket.com) — 支持绑定微信,提供免费与付费套餐,适合需要国内支付/本地化支持的团队
svnbucket 示例套餐(仅供参考,以服务商官网为准):
- 免费版:
- ¥0/月
- 100M 仓库空间
- 不限私有项目数量
- 不限项目成员数量
[localPath]必须存在,否则命令会报错。<repoUrl>必填,SVN仓库地址。[repoSubDir]未填时默认使用本地目录名。- 支持相对路径和绝对路径,兼容 Windows / macOS / Linux。
- 路径或子目录名中含空格时请使用双引号,例如:
npx dirfly "C:\My Project\dist" "https://github.com/user/repo.git" "frontend dir"# 使用当前目录,默认子目录
npx dirfly <repoUrl>
# 指定本地目录,自动使用目录名作为仓库子目录
npx dirfly ./dist <repoUrl>
# 指定本地目录和仓库子目录
npx dirfly ./dist <repoUrl> frontend按照日常开发中的使用频率从高到低排列
使用频率:★★★★★ 每天多次
| 操作 | Git 命令 | SVN 命令 | 说明 |
|---|---|---|---|
| 查看工作区状态 | git status |
svn status |
显示修改的文件 |
| 查看文件差异 | git diff |
svn diff |
显示具体的代码变更 |
| 查看提交历史 | git log --oneline |
svn log |
显示提交记录 |
使用频率:★★★★★ 每天多次
| 操作 | Git 命令 | SVN 命令 | 说明 |
|---|---|---|---|
| 更新到最新版本 | git pull |
svn update |
获取团队最新代码 |
| 添加文件到版本控制 | git add <file> |
svn add <file> |
标记新文件 |
| 提交代码更改 | git commit -m "<message>" |
svn commit -m "<message>" |
提交本地修改 |
使用频率:★★★★☆ 每天多次
| 操作 | Git 命令 | SVN 命令 | 说明 |
|---|---|---|---|
| 推送本地提交 | git push |
(已内置于 commit) | 同步到远程仓库 |
| 查看远程仓库 | git remote -v |
svn info |
显示仓库信息 |
使用频率:★★★☆☆ 每周多次
| 操作 | Git 命令 | SVN 命令 | 说明 |
|---|---|---|---|
| 删除文件 | git rm <file> |
svn rm <file> |
删除文件 |
| 重命名/移动文件 | git mv <old> <new> |
svn mv <old> <new> |
移动或重命名 |
使用频率:★★★☆☆ 每周多次
| 操作 | Git 命令 | SVN 命令 | 说明 |
|---|---|---|---|
| 切换分支 | git checkout <branch>git switch <branch> |
svn switch <branch-url> |
切换到指定分支 |
| 创建分支 | git branch <branch>git checkout -b <branch> |
svn copy <trunk-url> <branch-url> |
创建新分支 |
使用频率:★★☆☆☆ 每月几次
| 操作 | Git 命令 | SVN 命令 | 说明 |
|---|---|---|---|
| 查看分支列表 | git branch -a |
svn list <repo-url>/branches |
显示所有分支 |
| 合并分支 | git merge <branch> |
svn merge <branch-url> |
合并代码 |
| 删除分支 | git branch -d <branch> |
svn rm <branch-url> |
删除分支 |
使用频率:★★☆☆☆ 每月几次
| 操作 | Git 命令 | SVN 命令 | 说明 |
|---|---|---|---|
| 撤销本地修改 | git checkout -- <file>git restore <file> |
svn revert <file> |
放弃未提交的更改 |
| 回滚到指定版本 | git checkout <commit-id> |
svn update -r <revision> |
切换到历史版本 |
使用频率:★☆☆☆☆ 项目初期
| 操作 | Git 命令 | SVN 命令 | 说明 |
|---|---|---|---|
| 初始化仓库 | git init |
svnadmin create <repo> |
新建仓库 |
| 克隆仓库 | git clone <repo> |
svn checkout <repo> |
获取现有仓库 |
使用频率:★☆☆☆☆ 发布版本时
| 操作 | Git 命令 | SVN 命令 | 说明 |
|---|---|---|---|
| 创建标签 | git tag <tag> |
svn copy <trunk-url> <tag-url> |
创建版本标签 |
| 切换到标签 | git checkout <tag> |
svn switch <tag-url> |
切换到标签版本 |
使用频率:★☆☆☆☆ 特殊需要时
| 操作 | Git 命令 | SVN 命令 | 说明 |
|---|---|---|---|
| 查看特定版本文件 | git show <commit>:<file> |
svn cat <file>@<revision> |
查看历史文件 |
| 忽略文件配置 | .gitignore 文件 |
svn propset svn:ignore |
设置忽略规则 |
| 撤销特定提交 | git revert <commit> |
svn merge -c -<revision> |
回退指定提交 |
# Git 工作流
git pull # 更新
git status # 查看状态
git add . # 添加修改
git commit -m "msg" # 提交
git push # 推送
# SVN 工作流
svn update # 更新
svn status # 查看状态
svn add <files> # 添加新文件
svn commit -m "msg" # 提交并推送
- Git 分两步:
commit(本地)→push(远程) - SVN 一步到位:
commit(直接到服务器) - 分支成本:Git 分支是轻量级指针,SVN 分支是完整拷贝
- 离线工作:Git 可完全离线,SVN 依赖网络连接