git svn
我想在远程使用svn版本控制工具时在本地使用git管理,但是我个人的svn账户只有svn特定分支的权限,没有trunk等其他权限。您可以使用以下步骤管理本地:编写代码并通过git 将其提交到远程svn 存储库。
依赖工具:
git svn,安装git时基本就包含了git svn工具。如果没有,请使用以下命令安装:
git svn --v# git svn 如果您看到版本号,则意味着您安装了git-svn 版本2.17.1 (svn 1.9.4)。 适用场景:
如果远程端使用svn管理,本地使用git管理,则可以通过git发送到远程svn仓库并且拥有svn仓库权限或者对特定分支的读写权限。 svn:使用git svn的常见流程:
将远程项目拉取到本地git svn clone 配置远程发送分支与本地分支的映射关系git config 将指定分支拉取到本地指定分支git svn fetch 本地更改和发送操作git,相当于git add git commit 定期拉取远程项目到本地git svn rebase。如果存在冲突,冲突解决操作相当于用git svn dcommit 将本地提交的分支推送到远程对应的分支。操作如下。
表示要替换的内容。 [param]表示默认设置。 1. 将远程项目拉取到本地。 # 如果有svn仓库的权限,如果只有特定分支的权限,可以直接拉取svn仓库。你不能拉仓库。您只能拉取指定的分支,即批准的分支。 git svn clone [-r 起始版本号: 结束版本号] [本地文件夹名称] [-s] [--prefix=] svn/] ## 参数说明:-r 从指定版本开始克隆代码,意思是拉取。本地文件夹的名称将默认为svn 分支的名称。 -s 表示远程svn遵循标准svn分支规范。其实,-T trunk -b Branch -t 是tags的缩写,通过这些参数,git告诉你这些文件夹和git的branch、tags、master的对应关系。 -prefix=svn/将前缀svn 添加到svn 中的所有远程名称。这样做会让它更加统一和清晰,方便您使用。 一些示例场景是: git svn clone Demon # 默认情况下,所有版本。将会拉取到你本地的demo文件夹中。 # 如果你的远程仓库版本较多且速度较慢,你可以选择只从指定版本拉取代码,比如远程版本。版本号为100。仅应拉取更高版本。 90,head代表最新版本。 # 示例: git svn clone -r90:100 Demon git svn clone -r90:head Demon 2、如果已经有本地代码,则开始配置本地对应的分支信息。如果有仓库权限,直接拉取分支信息。如果使用仓库,可以跳过这一步,或者手动拉取指定的svn分支代码。步骤如下: git config --add svn-remote.远程分支名称.url git config --add svn -remote.远程分支名称.fetch :refs/remotes/远程分支名称# 例如: git config --add svn-remote.svn/。 url git config --add svn-remote.svn/.fetch :refs/remotes/svn/# "远程分支" 你可以在这里输入任何“名称”,只要这三个匹配即可。与上面克隆时的--prefix=svn/类似,我们建议添加svn/前缀以方便管理。 3、新建一个svn对应的本地分支。使用git svn fetch 远程分支名称检索svn 仓库中分支的代码。 # 示例: git svn fetch svn/# 此步骤完成后,您将看到本地分支。运行git Branch -a 显示以下信息: * 查看masterremotes/git-svnremotes/svn/4 并切换到指定分支。 git checkout -b local 分支名称远程分支名称# 示例:git checkout -b svn/5 本地修改、提交代码和操作与git add完全相同。 6. 将远程更新拉到本地。 git svn rebase to rebase 7.如果有冲突,解决方法与git中相同。先解决冲突,然后运行以下命令git add: git rebase -- continue 8. 解决冲突后,提交到.远程svn仓库git svn dcommit# 我附上从远程端拉取项目或者拉取新分支项目的步骤。 # #首先拉取项目:git svn clone [本地文件夹名称]##在现有的git-svn项目中创建一个新分支。例如,拉取项目demo_V1.0.0 代码的demo 分支。 git config --add svn-remote .svn/demo_V1.0.0.url https://svn_url/branches/demo_V1.0.0git config --add svn-remote.svn /demo_V1.0.0.fetch :refs/remotes/svn/demo_V1.0.0git svn fetch svn/demo_V1.0.0git checkout -b Demon_V1.0.0 svn/demo_V1.0.0Git-Svn 概述
如果您当前需要使用Svn 服务器或者您的开发环境需要使用Svn 服务器,则git svn 工具特别有用。将其视为Git 的简化版本。然而,在使用过程中可能会出现问题。为了避免麻烦,请遵守以下规则:
维护线性提交历史记录,不包括git merge 生成的提交。将主线分支之外执行的所有开发合并回主线,避免直接合并,并且不要创建和使用单独的Git 服务器进行协作。您可以对其进行配置以加快新开发人员的克隆过程,但不要输入任何不包含git-svn-id 条目的内容。您还可以添加预接收挂钩来在每次提交中搜索git-svn-id 并拒绝不包含它的提交。我们建议您从项目代码管理的角度继续使用Git。如果可能的话,了解如何使用Git 并相信自己。 软件开发还可以提高开发效率。 毕竟使用git svn只是一个临时的迁移工具。 参考文章:git官方文档。