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解决冲突。将本地提交的分支推送到远程对应分支git svn dcommit。具体操作如下:
表示要替换的内容,[param]表示默认设置1.拉取远程项目到本地# 如果有svn仓库权限,可以直接拉取svn仓库只有特定分支的权限如果没有则不会能够拉仓库。您只能拉取指定的分支。即批准的分支git svn clone [-r 开始版本号: 结束版本号] [本地文件夹名称] [-s] [--prefix=svn/] ## 参数说明: -r 表示从中拉取代码版本。本地文件夹的名称默认为svn分支的名称。 -s表示远程svn遵循标准svn分支规范,有trunk、branch和其他分支。实际上,-T trunk -b Branch -t 代表标签。这些参数告诉git 哪些文件夹对应于git 分支、标签和主控。 -prefix=svn/将前缀svn 添加到svn 中的所有远程名称。为了方便、统一和清晰,我们建议这样做。将会拉取到你本地的demo文件夹中# 如果你的远程仓库版本较多且速度较慢,你可以选择只拉取指定版本的代码,比如远程版本。版本号为100。仅应拉取更高版本。 90、head 代表最新版本# 示例: git svn clone -r90:100 demo git svn clone -r90:head Demon 2、如果本地已有代码,则开始设置本地对应的分支信息。如果你想浏览仓库,可以跳过这一步或者手动拉取指定的svn分支代码。步骤如下: git config --add svn-remote.远程分支名称.url git config --add svn -remote.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/# 此步骤完成后,您将看到本地分支。运行分支信息:gitbranch -a。显示如下信息: * master Remotes/git-svn Remotes/svn/4.查看分支并切换到指定分支。 git checkout -b 本地分支名远程分支名# 示例:git checkout -b svn/5 本地修改、提交代码及操作与git操作相同,与git add git commit -m \'message\' 完全相同6. 将远程更新拉取到本地,这里我们拉取git svn rebase 为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官方文档