参考链接

实际操作

查看帮助

1
git svn --help

编辑 users.txt

1
2
svn_user1 = git_user1 <email@xxx.com>
svn_user2 = git_user2 <email@xxx.com>

拉取 svn 代码

1
2
3
4
5
6
7
8
9
## 针对 trunk / branches / tags 结构
## 将 trunk 下内容迁移到 master
## 去掉 --stdlayout 参数,则将所有内容迁移到 master
git svn clone --stdlayout --no-metadata -A users.txt SVN_URL GIT_PROJ-TMP

## 若出现 Author: xxx not defined in users.txt file
## 可在 users.txt 中添加缺失的映射
## 然后在工程目录(GIT_PROJ-TMP)下执行
## git svn fetch

分支处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## 批量删除含 @ 符号的 remote-tracking branches
git branch -r | grep @ | while read branchname; do git branch -r -d "${branchname}"; done

## 删除 origin/trunk
git branch -r -d origin/trunk

## 批量生成 tags & 清除相关分支
git branch -r | grep tags | cut -d / -f 3 | while read tagname; do git tag "${tagname}" "origin/tags/${tagname}"; git branch -r -d "origin/tags/${tagname}"; done

## 批量生成 branches & 清除相关分支
git branch -r | cut -d / -f 2 | while read branchname; do git branch "${branchname}" "origin/${branchname}"; git branch -r -d "origin/${branchname}"; done

## 同步到远端仓库
git remote remove origin
git remote add origin GIR_REMOTE_URL
git push -u origin master

## push all branches
git push origin --all

## push all tags
git push origin --tags

建立本地工程 & 清理临时目录

1
2
3
4
5
6
7
8
git clone GIT_PROJ-TMP GIT_PROJ

cd GIT_PROJ
git remote remove origin
git remote add origin GIT_REMOTE_URL

cd ..
rm -rf GIT_PROJ-TMP