Git与SVN冲突解决及特性对比
Git与SVN冲突解决
文章目录
- Git与SVN冲突解决
- Git与SVN对比
参考文献
https://blog.csdn.net/enlangs/article/details/44806029
当我们使用"git svn rebase"合并产生冲突时,应该记得如下的处理要点
- 在rebase时,不伦发生什么情况,我们都处在"no-branch"当中,都没有在一个有效的分支中;(branch-分支)
- 使用git status查看项目,如果发现一个".dotest"文件,可以忽略它;
- 如果想终止合并,使用"git rebase --abort";
- 手动修复完冲突的文件,还需使用"git add"加入被修复的文件;
- 然后使用"git rebase --continue"继续更新;
- 如果遇见提示"did you forget to call ‘git add’?",而实际冲突已经处理,那么可以使用"git rebase --abort"来跳过它;
- 重复上面的步骤,直到rebase完成;
- 我们再任何时候都可以使用"git rebase --abort"来终止操作;
而在第4步,我们处理冲突的文件时,需要通过历史版本的对比,删除或者修改对应的代码,完成修复;
PS: git-svn官方参考:http://git-scm.com/docs/git-svn
Git与SVN对比
参考文献
https://www.cnblogs.com/ssgeek/p/9642171.html
Git:
目前时间最先进的分布式版本控制系统,Git与SVN一样也有自己的集中式版本库或服务器,但是Git更倾向于分布式模式的使用;也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个跟中心版本库一模一样的本地版本库;
Git每一个终端都是一个仓库,客户端并不只是提取最新版本的文件快照,而是把原始的代码仓库完整的镜像下来,每一次的提取操作,实际都是一次对代码仓库的完整备份;Git不仅仅是版本控制系统,也是一个内容管理系统(CMS),工作管理系统等;
Git还能和若干不同的远端代码仓库进行交互,我们可以在同一个项目中,分别和不同的工作小组进行协作,根据需求设定不同的协作流程;
Git的绝大多数操作只需要访问本地文件和资源,不需要联网,所以处理速度相对较快;
- Git中每个克隆(clone)的版本库都是平等的,任何一个版本库都可以克隆出来,作为自己的版本库;
- Git每一次提取操作,实际都是一次完成的代码仓库提取;
- 提交无需授权,完全在本地操作,
- 基于旧版本的改动也可以成功提交,此时会基于旧版本创建一个新的分支;
- Git的提交不会被打断,直到工作完全完成,PUSH给他人或者他人PULL你的版本库,合并发生在PULL和PUSH过程中,不能自动解决的冲突会提示用户手动完成;
- 冲突解决不再像SVN一样,取决于谁先提交,而是在需要的时候才进行合并和冲突解决;
SVN:
Subversion,集中式管理的版本控制器,只有一个单一的集中管理服务器,保存所有文件的修订版本,团队工作者通过客户端连接到这台服务器,取出最新的文件或者提交更新;
SVN原理上只关心文件内容的具体差异,每次记录哪些文件作了更新,以及更新了哪些内容;
- 每个版本库有唯一的URL(官方地址),每个用户都从这个地址获取代码和数据;
- 提交必须有网络连接;
- 提交需要授权,如果没有写的权限,则提交失败;
- 提交并非每次都能够成功,如果有其他人先于你提交,那么会提示"改动基于过时的版本,先更新在提交…"诸如此类;
- 冲突解决是一个提交速度的竞赛:手快先提交,平安无事,手慢后提交,可能会遇到较为麻烦的冲突,需要解决;
优点:每个人都可以一定程度上看到项目中其他人正在做什么,管理员也可以轻松掌握每个开发者的权限;
缺点:中央服务器单点故障,安全性相对较低;如果宕机,无法进行协同工作,如果磁盘发生故障,则有数据丢失的风险;
PS:如果具有使用SVN的背景,需要做一定的思想转换,来适应Git提供的一些功能特性;
那么集中式版本控制与分布式版本控制又有何区别呢?
集中式版本控制:
版本库集中存放在中央服务器,团队开发时,个人先从中央服务器取得最新的版本,然后在进行开发,开发完成后再把代码提交给中央服务器;
集中式版本控制系统的最大毛病是必须联网才能工作,如果在局域网内带宽大速度快,但如果是互联网,在网速较慢的情况下,就很影响使用体验;
分布式版本控制:
没有中央服务器,团队每个人的电脑就是一个完整的版本库,这样工作时就不需要联网;
既然每个人电脑都是一个完整的版本库,那么多人协作如何进行呢?
假设,我在自己的电脑上改了A文件,我的同事也在他的电脑上改了A文件,这时我和他之间只需要把各自的修改推送给对方,就可以互相看到对方的修改了;
在实际使用分布式版本控制系统的时候,很少出现两人之间的电脑互相推送版本库的修改,因为两人可能不在一个局域网内,两台电脑互相访问不了,也可能有一台电脑压根没有开启;
因此分布式版本控制系统通常有一台充当"中央服务器"的电脑,但是这个服务器的作用仅仅是用来方便"交换"大家的修改,有没有它都不影响正常干活,只有"交换"的效率高低的区别;
Git与SVN冲突解决及特性对比相关推荐
- Git下的冲突解决【转】
本文转载自:http://www.cnblogs.com/sinojelly/archive/2011/08/07/2130172.html 冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是m ...
- linux svn 冲突解决方法
linux svn 冲突解决方法 参考文章: (1)linux svn 冲突解决方法 (2)https://www.cnblogs.com/manhelp/p/11643851.html (3)htt ...
- SVN学习总结(2)——SVN冲突解决
2019独角兽企业重金招聘Python工程师标准>>> 在我们用VS进行项目合作开发的过程中,SVN的提交控制是至关重要的,大家不可避免的都遇到过SVN冲突的问题,开发的时候,应该认 ...
- eclipse中svn冲突解决
最近在和同事做项目的时候出现了冲突,冲突解决方法是这样的: 右键项目 -> Team -> 与资源库同步 2.在同步视图中选择Conflicts Mode,以便首先查看解决冲突 3.双击需 ...
- [Git] git pull冲突和git stash pop冲突解决
一.git pull 冲突 代码仓有人提交了新代码,而我本地也修改了代码,想要pull一下,却发现: error: Your local changes to the following files ...
- git 分支合并冲突解决
已经累到不想说话了,直接上流程吧! 1.比如你想A分支合并到B分支,先把这两分支都pull一下最新代码:git pull 2.切换到要合并的分支:git checkout tougu_pan (tou ...
- 服务器Svn 冲突解决
1.Node remains in conflict,svn在服务器上显示冲突 解决: 经过各种搜索,给出的办法均行不通,后来发现还是stackoverflow比较diao svn revert –d ...
- LINUX中SVN冲突解决办法
svn执行up更新后,有时会出现冲突,如果需要编辑冲突,可以选择(p)postpone 稍后处理,svn会自动生成三个冲突文件,xx.cpp.maine是你自己的修改版本,其他带编号的是别人的提交版本 ...
- Git 分支管理和冲突解决
2019独角兽企业重金招聘Python工程师标准>>> 创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git bran ...
最新文章
- Mac安装MySql 5.7.11
- centos国内yum源
- 《大数据》2020年第6期目次摘要
- 西瓜书+实战+吴恩达机器学习(十八)降维(主成分分析 PCA)
- 高中毕业 84 岁奶奶自学编程受邀参加 WWDC,人生从来没有太晚!
- Firefly Mutil-Boot多系统安装启动程序发布
- linux增加临时编译bin,Linux Rpmbuild 包制作
- 弹出浮层css+JQuery
- telnet 批量测试(二):telnet 批量测试脚本实现关键代码
- 正则表达式(以校验qq是否合法等为例)
- python实现集合并交差运算_集合的并交差运算
- servlet+js实现首页、尾页、下一页、上一页(翻页功能)
- jenkins 出现“Error 403 No valid crumb was included in the request ”的解决方案
- 德蕾莎修女---一个伟大的人
- C语言:L1-070 吃火锅 (15 分)
- bway ESL电竞联赛十六季C组对战前瞻 三组战队情报分析
- 在线教育20年:在线教育的未来发展趋势
- Google针对非 SDK 接口的限制
- 第一个简单的JSP网页
- OpenShift 4 - 从 1.3G 到 50M,以最小化的可执行程序运行 Quarkus 微服务