使用Git 作为 Subversion 仓库的客户端

Subversion 与 Git Subversion 特点概括起来主要由以下几条: 每个版本库有唯一的URL(官方地址),每个用户都从这个地址获取代码和数据; 获取代码的更新,也只能连接到这个唯一的版本库,同步以取得最新数据; 提交必须有网络连接(非本地版本库); 提交需要授权,如果没有写权限,提交会失败; 提交并非每次都能够成功。如果有其他人先于你提交,会提示“改动基于过时的版本,先更新再提交”… 诸如此类; 冲突解决是一个提交速度的竞赛:手快者,先提交,平安无事;手慢者,后提交,可能遇到麻烦的冲突解决。 好处 每个人都可以一定程度上 阅读详情

Git 与 Subversion

Git 和 Subversion两个大名鼎鼎的版本控制系统,有着各自的特点和长处。笔者更喜欢Git分布式去中心化不依赖网络的便捷和强大的本地分支管理,目前开源项目以及大量的商业项目都使用 Subversion 来管理源码。当代码仓库为SVN仓库而又想使用git时,恰好git svn工具可以满足您的需求。

Warning

在使用 git svn 的时候,你实际是在与 Subversion 交互,Git 比它要高级复杂的多。尽管可以在本地随意的进行分支和合并,最好还是通过衍合保持线性的提交历史,尽量避免类似与远程 Git 仓库动态交互这样的操作。
避免修改历史再重新推送的做法,也不要同时推送到并行的 Git 仓库来试图与其他 Git 用户合作。Subersion 只能保存单一的线性提交历史,一不小心就会被搞糊涂。合作团队中同时有人用 SVN 和 Git,一定要确保所有人都使用 SVN 服务来协作——这会让生活轻松很多。

Start

远程SVN仓库地址:

svn://svnbucket.com/****/svn_test

本地git svn clone

在这里插入图片描述
git svn clone svn仓库地址 -s可以将远程Subversion 仓库导入到一个本地的 Git 仓库中。-s 命令,它意味着标准布局(s 是 Standard layout 的首字母):Subversion 仓库遵循了基本的分支和标签命名法则(如上图trunk、tags、branches文件夹命名)。完整命令为:git svn clone svn仓库地址 -T trunk -b branches -t tags;若您的仓库命名与标准不一致请做出相应的改动。

若出现:Using higher level of URL: xxxxxx错误
使用git svn clone svn仓库 -s --no-minimize-url具体可参考:
https://stackoverflow.com/questions/1453416/git-svn-clone-checkouts-wrong-repo

向SVN仓库提交

在这里插入图片描述
在这里插入图片描述
可以看到本地git仓库初始完成之后,本地代码的管理完全基于git命令,只是向服务器仓库提交代码有变动使用git svn dcommit

拉取服务器最新代码

sit svn fetch 能获取最新的数据,git svn rebase 才会在获取之后在本地进行更新 。
在这里插入图片描述
在这里插入图片描述
事实上sit svn fetch类似git fetch会将远程仓库代码拉取到本地对应分支上:
在这里插入图片描述

需要牢记的一点是,Git 要求我们在推送之前先合并上游仓库中最新的内容,而 git svn 只要求存在冲突的时候才这样做。假如有人向一个文件推送了一些修改,这时你要向另一个文件推送一些修改,那么 dcommit 将正常工作。
众所周知SVN仓库只保持单一的线性提交历史,而不像git的commit历史可以有合并的历史“分叉”,所以使用git的本地分支尽可能使用rebase到主干master保持干净的线性历史对于svn dcommit来说是一个好的选择。

分支操作-创建新的 SVN 分支

git svn branch [your_branch_name] -m "message"命令可以在svn服务器上创建一个新的分支等价于svn copy trunk branches/your_branch_name
若出现:
在这里插入图片描述
git svn branch [your_branch_name] -m "test" --destination branches
详情参阅:https://stackoverflow.com/questions/2974016/git-svn-branching
在这里插入图片描述
上述命令仅仅创建svn分支并不会切换分支。

切换分支并提交到SVN指定分支

在这里插入图片描述
使用git svn dcommit命令需要注意:

Git 通过搜寻提交历史中 Subversion 分支的头部来决定 dcommit 的目的地——而它应该只有一个,那就是当前分支历史中最近一次包含 git-svn-id 的提交。

如果要提交到上面步骤在svn仓库创建的new_branch分支,则需要基于该remote svn 分支创建一个本地分支(上例子的hotfix),基于hotfix分支修改执行dcommit则提交到对应的svn new_branch分支。查看hotfix分支的log:
在这里插入图片描述
可以发现其最近的git-svn-id记录对应的svn仓库的new_branch分支,git svn执行dcommit命令以此提交更改到对应远程对应分支。git svn rebase命令也类似会拉取new_branch的最新修改更新到本地。

合并更改到主分支

若是基于svn new_branch分支做了修改提交,例如在本地的hotfix分支(对应svn的new_branch)分支开发完成了一个新模块想合并到git主分支并且提交到master对应的svn trunk分支该如何操作:
在这里插入图片描述
上述情况,new_branch已经有提交"change for test" 而 master分支还停留在"add img"提交处:

git checkout master //切换到主分支

//合并分支使用--squash将commit记录合并更新为一个新commit
git merge --squash hotfix  
git commit -am "merge new_branch branch features"
git svn dcommit

在这里插入图片描述
这样就可以把new_branch通过git svn合并提交到svn的trunk,可以看到略显麻烦并且在new_branch上的提交记录被隐藏了;当然也可以选择使用svn来执行svn 分支的合并然后再通过git svn rebase获取更新到本地git分支。不过本博文旨在尽量弱化svn操作,尽可能使用git svn来完成版本的管理。

Tag操作

git svn tag操作与git svn branch 操作类似:
在这里插入图片描述

分支/Tag的删除

由于git和svn分支的概念和管理上有很大差异,git svn命令没有提供删除svn 分支的方法。删除svn分支通过svn命令删除:

//1.删除远程svn仓库的分支
svn rm svn_branch_url -m 'messge:rm branch'
//2.删除本地git对应的追踪分支
git branch -D -r remote_name/the_branch
//3.删除本地git svn文件
rm -rf .git/svn/refs/remotes/your_branch

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

tag删除是类似的:

svn rm $URL/tags/the_tag_will_delete // step 1
git branch -D -r remote_name/tags/your_tag_name
rm -rf .git/svn/refs/remotes/remote_name/tags/your_tag_name

在这里插入图片描述

《电磁兼容设计》专栏说明 本专栏自2024年1月起开始更新,仅设此一个电磁兼容相关知识专栏,并将一直持续更新下去,无期限 阅读详情

相关推荐

从3dB定向耦合器到双圆极化天线:在HFSS里玩转相位差90°的馈电艺术

本文详细介绍了在HFSS中设计3dB定向耦合器与双圆极化天线的关键技术,重点解析了90°相位差生成原理及馈电网络设计。通过HFSS仿真工具,实现从定向耦合器到完整天线系统的集成,优化阵列天线性能,适用于卫星通信和雷达系统。

weixin_33717117的博客 556

Git 还是 Subversion,要怎么选?

Git是一个分布式版本控制系统,由 Linus Torvalds 在 2005 年创建,用于管理 Linux 内核的开发。它是当前最流行的版本控制系统,适用于各种规模的项目。主要特点:分布式:每个用户的工作目录是一个完整的代码仓库,包含所有版本的历史记录。高效的性能:操作(如提交、分支、合并)都在本地进行,速度快。强大的分支和合并功能:允许创建和切换分支,支持复杂的分支策略和合并操作。数据完整性:使用 SHA-1 哈希算法确保数据的完整性和一致性。灵活的工作流。

qq_42631788的博客 603

个人信息保护合规审计人员(中级)能力测试试卷

本文是关于个人信息保护合规考试的试题解析,内容涵盖《个人信息保护法》相关规定。试卷包含单选题、多选题、判断题、简答题和案例分析题五种题型,总分100分,考试时间120分钟。试题重点考察个人信息处理的基本原则、敏感个人信息处理要求、合规审计流程、个人信息保护影响评估等内容。通过案例分析题详细解析了人脸识别登录、数据共享、跨境传输等场景下的合规要求。参考答案均严格依据《个人信息保护法》等法律法规,为个人信息处理活动提供了明确的合规指引。

qq_41525079的博客 849

Git和SVN的区别与联系

Git和SVN

Java是世界上最好的语言.c 1544

Windows环境下IBSIMU的安装

本文主要介绍离子束仿真程序IBSIMU在Windows环境下的安装。

C_Tso的博客 2992

双相机坐标系标定

工业双相机对位标定

sinat_33762356的博客 8317

git的学习

SVN(Apache Subversion)和 Git 是两种流行的版本控制系统(VCS),用于跟踪和管理代码和其他文件的变化。SVN(Subversion)和 Git 是两种常见的版本控制系统,它们在很多方面存在显著的区别。:SVN 是集中式版本控制系统,意味着所有版本历史记录都存储在中央服务器上,开发者从中央服务器检出代码并进行提交。而 Git 是分布式版本控制系统,每个开发者的工作目录都是一个完整的代码库,包含项目的所有历史记录。

m0_61924236的博客 2055

IEEE投稿完整流程——以IEEE Transactions on Cybernetics为例【附:论文格式模板】

前言 以下是官方的流程,包括了论文的格式和提交的流程,重要!重要!重要! 在IEEE的官网中,也有论文提交的文件 可以直接参考: 中文版: 作者指南 英文版: Manuscripts-Author-Guide 作者指南的版本指导流程可能和最新版的官网不一致!!! 或者在下面的链接中,按照你的论文类型,选择不同的论文模板: IEEE article template 以下以IEEE Transactions on Cybernetics 为例子 IEEE Transactions on Cyberne

XC___XC的博客 10万+

Git 和 Subversion (SVN)的全方面对比

Git 和 Subversion (SVN) 是两种流行的版本控制系统,它们是我们开发中用的最多的两个工具。

qq_29751083的博客 880

企业多部门网络隔离实战:用华为交换机VLAN+Trunk实现行政/技术部安全隔离

本文详细介绍了如何利用华为交换机的VLAN划分与Trunk链路技术,实现企业行政与技术部门间的网络逻辑隔离。通过具体的配置案例,阐述了Access与Trunk端口的工作原理、单交换机与多交换机环境下的部署策略,并延伸至三层网关部署与ACL访问控制,为企业构建安全、高效的核心网络提供实战指导。

p4q5r6s7t的博客 577

别急着让AI画板!聊聊Cadence Allegro X AI和OrCAD X在实际PCB项目中的真实体验

本文分享了Cadence Allegro X AI与OrCAD X在PCB设计中的实际应用体验,探讨了AI辅助Layout的效率提升与潜在陷阱。通过高速ADC采集板案例,详细对比了AI与传统方法在电源平面分割、低速信号布线等任务中的表现,并总结了人机协作的最佳实践,为工程师提供实用参考。

weixin_30836759的博客 2207

Git 与 Subversion

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34273479的博客 240

PyCharm安装PyQt5及工具详细教程

PyCharm是一款功能强大的Python集成开发环境(IDE),而PyQt5是一个用于创建GUI应用程序的流行Python库。在本教程中,我将指导您如何在PyCharm中安装PyQt5及其相关工具,并提供相应的源代码示例。安装完成后,启动PyCharm并创建一个新的项目。为了隔离项目的依赖项,我们建议在PyCharm中使用虚拟环境。在创建项目的过程中,您可以选择创建新的虚拟环境或使用现有的环境。根据您的操作系统,选择适当的版本并按照安装向导的指示进行安装。首先,您需要下载并安装PyCharm。

CfProgram的博客 588

Git and Subversion

Cloning a Subversion Repository $ git svn clone <subversion-url> ?optional-directory-name? Synchronizing With Upstream $ git svn rebase Pushing Changes Upstream $ git svn dcommit ...

weixin_33847182的博客 107

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

CentOS 7 安装 建立svn仓库 远程连接

首先安装svn:yum -y install subversion (-y 是对所有问题回答yes, 这里没有问题要回答, 离线安装可能比较麻烦, 会有依赖) Git 安装类似:yum -y install git mikdir /usr/local/svn_repertory # 创建svn大仓库用于存放所有项目代码 cd/usr/local/svn_repertory ...

weixin_30737433的博客 296

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

linux git图形界面,三款 Linux 下的 Git 图形客户端

了解这三个 Git 图形客户端工具如何增强你的开发流程。在 Linux 下工作的人们对 Git 非常熟悉。一个理所当然的原因是,Git 是我们这个星球上最广为人知也是使用最广泛的版本控制工具。不过大多数情况下,Git 需要学习繁杂的终端命令。毕竟,我们的大多数开发工作可能是基于命令行的,那么没理由不以同样的方式与 Git 交互。但在某些情况下,使用带图形界面的工具可能使你的工作更高效一点(起码对那...

weixin_42512103的博客 1847

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IDEA项目提交至SVN&GIT仓库

在IntelliJ IDEA(简称IDEA)中,将项目提交至SVN(Subversion)或GIT仓库是版本控制的基本操作。通过以上步骤,您可以在IDEA中成功地将项目提交至SVN或GIT仓库,从而实现版本控制和团队协作。

警警的博客 4116

gitee使用svn_Gitee SVN支持

现在 Gitee 目前支持使用 Subversion 对仓库进行操作,以下是使用指南和注意事项。使用前注意仓库体积超过 300 MB 不建议使用 Subversion 操作仓库,存储库容量达到 400 MB,或者 300 MB 并且存储大量非文本数据时,我们将关闭仓库的 Subversion 支持。由于 GIT 不支持空目录的提交,在存储机器上,无论是普通仓库还是开启 Subversion 接入的...

weixin_32808853的博客 2502

SVN迁GIT操作步骤,核心是git svn命令

以克隆 https://xxxx/eport 到GITLAB为例 1、首先安装GIT客户端,安装过程一路选默认即可 http://rj.baidu.com/soft/detail/40642.html 2、使用git svn clone 命令 克隆svn仓库的项目 Git svn clone -r 1:HEAD svnurl (1:表示svn工程的初始索引,建议从该工程真实的...

周二也被占用 388

linux git管理工具,分享|三款 Linux 下的 Git 图形客户端

了解这三个 Git 图形客户端工具如何增强你的开发流程。在 Linux 下工作的人们对 Git 非常熟悉。一个理所当然的原因是,Git 是我们这个星球上最广为人知也是使用最广泛的版本控制工具。不过大多数情况下,Git 需要学习繁杂的终端命令。毕竟,我们的大多数开发工作可能是基于命令行的,那么没理由不以同样的方式与 Git 交互。但在某些情况下,使用带图形界面的工具可能使你的工作更高效一点(起码对那...

weixin_39625987的博客 921

SVN迁移到gitlab

安装git和SVN客户端 yum install -y git subversion git-svn 开启sshd密钥验证方式 sed -i '/^AuthorizedKeysFile/s/^/#/g' /etc/ssh/sshd_config sed -i '/AuthorizedKeysFile/a\AuthorizedKeysFile .ssh/id_rsa.pub' /etc/ssh/s...

calvin201505的博客 166

在ProjectLocker上搭建自己的GIT服务器

ProjectLocker是一个提供项目代码托管服务的网站。免费账户可拥有300M的空间,最多可以建立3个项目,供最多3人的开发小组使用,对于自己业余时间开发的小项目来说足够用了。用它的好处就是不用把代码放在U盘上,下班从公司拷回家,上班再从家拷到公司这样拷来拷去了,下班的时候p

人是会思考的一棵苇草 3225

在Apache项目中设置源代码控制系统(如SVN或Git)是确保代码管理和协作的关键步骤

在Apache项目中设置源代码控制系统(如SVN或Git)是确保代码管理和协作的关键步骤。- **Subversion (SVN)**: 用于版本控制和协作开发。 - **Git**: 一个分布式版本控制系统,适用于快速、灵活的开发流程。

[Blog][Domain] programb.blog.youkuaiyun.com 780

Pycharm使用SVN同步代码数据教程

本文介绍了在PyCharm中配置和使用SVN进行团队协作开发的完整流程。首先详细说明了SVN客户端的下载安装步骤,包括TortoiseSVN的组件选择和安装配置。其次指导如何在PyCharm中设置SVN路径和配置目录。对于没有SVN服务器的情况,提供了VisualSVN Server社区版的安装和仓库创建教程,包括用户权限设置等关键环节。随后讲解了如何建立仓库连接、检出项目、提交修改等基本操作,并重点阐述了版本回退的特殊处理方式(需要先回退到更早版本)。最后简要介绍了项目级别的提交和拉取操作,强调这是实际开

m0_62102955的博客 638

代码管理平台、SVN、GitHub、Gitlab

代码管理平台介绍 安装svn 客户端上使用svn(linux) 客户端上使用svn(windows) 单机上使用git 简历远程仓库 克隆远程仓库 分支管理 远程分支管理 标签管理 git别名 搭建git服务器 安装gitlab 使用gitlab gitlab备份和恢复 1. 代码管理平台...

chouzhengzi6121的博客 334

SVN与Git比较(集中式VS分布式)

一、 集中式vs分布式 1. Subversion属于集中式的版本控制系统 集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。 Subversion的特点概括起来主要由以下几条: • 每个版本库有唯一的URL(官方地址),每个用户都从这个地址获取代码和数据; • 获取代码

七月的专栏 726
上一篇: Git常用配置
下一篇: Java移位操作、逻辑右移以及Int转指定位数二进制String
BroJoker
博客等级 码龄16年 9粉丝 25原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值