从svn到git开发转变
前言:目前的公司的开发技术还是处于刀耕火种的年代,react,vue已经火到不行了,可是还在用jQuery一遍遍处理着dom。版本控制用的是svn,这里也不是说svn不好,在windows下svn的“傻瓜式操作”非常的简单,对于开发人数很少的团队,也够用,但是如果开发人数比较多,开发交叉比较大的情况下,git的优势就非常明显。
一,SVN
(1)svn的操作比较简单,官网上下载安装完之后,在空白处鼠标,如下图就表示安装成功了
(2)导出,从远程库导到本地
这里下载的是汉化版的,填好远程库和本地地址之后,点确定即可导到本地。这里直接讲到客户端的操作,因为没在服务器建立仓库的经验啊
(3)右键,点设置
我们可以看到svn也可以设置分支。但是要注意这个分支实际是一个完整的目录,当你新建一个分支的时候,每个人都会拥有这个分支
(4)进入下载到的本地库文件里,右键,我们可以看到有,SVN更新和SVN提交的选项。在提交之前先更新,然后手动处理冲突之后再提交即可
总之,svn的图形化操作非常的简单,其他的一些操作这里就不去详解了,毕竟这篇的重点是git,还是稍稍总结一下svn和git的区别,以及为什么要转为git,git的好处在哪里?
二,svn和git的区别
其实我是先接触git的,所以刚到公司用svn的时候我心里是有些拒绝的。直到有一天在知乎上看到一个回答,终于理解了为什么很多公司倾向于svn
svn:集中式版本控制,只有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。这也是最大的缺陷,如果服务器宕机,将影响到所有的开发人员,而且如果中心服务器的磁盘坏掉,如果代码没有备份的话,就相当麻烦了。即使把本地代码进行合并得到一个相对完整的本本,再把这个代码重新部署到服务器的新仓库时,会丢失所有的历史版本以及日志。
svn必须要联网才能工作
svn是按文件的方式来存储的,关心的是文件内容的具体差异
svn提交的时候必须授权,如果没有写权限,提交会失败
svn提交并非每次都能成功,先更新再提交,先提交的会与后提交的发生冲突。
当然,用svn我们可以看到项目中其他人的开发进度,这便于领导管理。
git:分布式版本控制,首先git也是有自己的集中式版本库和服务器,但它更倾向于分布式模式。每个开发人员从中心版本库/服务器上check out代码克隆一份到自己的机器上。客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。每一次的提取操作,实际上都是一次对代码仓库的完整备份。每一个开发人员的电脑上都有一个Local Repository,所以即使没有网络也一样可以Commit,查看历史版本记录,创建项 目分支等操作,等网络再次连接上Push到Server端。
git是把内容按元数据方式存储,不保存前后变化的差异数据,若文件没有变化,git不会再次保存,只对上次保存的快照做一个链接。
git每个clone的版本库都是平等的
git的提交不会被打断,push给他人或者他人pull你的版本库,合并会发生在pull和push的过程中,不能自动解决的冲突会提示手工完成。
git没有一个全局版本号,但是svn是有的
git每个历史版本都存储完整文件,便于恢复,svn存储差异文件,历史版本不可恢复
三,git多人协作开发流程
首先在windows下安装git,直接在官网上安装,next默认安装即可。
因为git的分布式,安装完之后,还需要进一步设置
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
注意:git config
命令的--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
(1)创建版本库,并把目录变成git可以管理的仓库
$ mkdir test $ cd test $ pwd //用于显示当前目录 $ git init
(2)把文件添加到暂存区
$ git add readme.txt
(3)把暂存区文件提交到仓库
$ git commit -m "write a readme file"
-m
后面输入的是本次提交的说明,可以输入任意内容
commit可以一次提交多个add的文件
(4)查看仓库当前状态
$ git status
可以看到文件被修改了(没有被提交),但是要看具体修改了什么内容,用以下命令:
$ git diff readme.txt
(5)版本回退
如果文件改错,或者误删,可以从最近的一个commit恢复
在这之前:我们可以用以下命令查看提交记录,由近到远,如果嫌输出信息太多,可以试试加上--pretty=oneline
参数:
$ git log
界面上显示的一大串数字就是commit id(版本号)
在git中,用HEAD表示当前版本,上一个版本HEAD^,再上一个版本HEAD^^
$ git reset --hard HEAD^
如果你已经版本回退,但是后悔了,只要找到版本id,例如3628164(不用写全,也不能太短),回退到指定版本
$ git reset --hard 3628164
如果把界面关闭,该如何查找版本id,如下的命令会记录你的每一次命令
$ git reflog
(6) 查看工作区和版本库里最新版本的区别
$ git diff HEAD -- readme.txt
(7)撤销修改
1.撤销工作区的修改,让这个文件回到最近一次git commit
或git add
时的状态。
$ git checkout -- readme.txt
注意:-- 这个很重要,没有的话就变成切换分支
2.已经git add到暂存区,还没有提交。用以下命令把暂存区的修改撤销掉
$ git reset HEAD readme.txt
3.如果已经提交到版本库,可以用版本回退
(8)删除文件
1.从版本库中删除文件
$ git rm test.txt
2.从工作区中误删,版本库中还有
$ git checkout -- test.txt
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
(9)添加远程库(github)
1.把本地库与远程库关联
$ git remote add origin git@github.com:michaelliao/learngit.git
远程库的名字就是origin
,这是Git默认的叫法,也可以改成别的。
2.把本地库的内容推送到远程,
$ git push -u origin master
第一次推送master
分支时,加上了-u
参数
只要本地作了提交,就可以通过命令:
$ git push origin master
3.从远程库克隆到本地
$ git clone git@github.com:michaelliao/gitskills.git
Git支持多种协议,默认的git://
使用ssh,但也可以使用https
等其他协议。
(10)创建与合并分支
1.创建分支dev
$ git checkout -b dev
加上-b
参数表示创建并切换,相当于以下两条命令:
$ git branch dev //创建 $ git checkout dev //切换
查看当前分支:会列出所有分支,当前分支前面会标一个*
号。
$ git branch
把dev分支的工作合并到master主分支(此时master是当前分支)
$ git merge dev
合并完之后,就可以删除分支dev
$ git branch -d dev
(11)解决冲突
当不同分支修改了同一个文件合并时,会发生冲突,Git用<<<<<<<
,=======
,>>>>>>>
标记出不同分支的内容
把需要修改的分支修改后重新提交
用以下参数查看分支的合并情况(分支合并图):
$ git log --graph --pretty=oneline --abbrev-commit
(12)分支策略
master主分支应该仅用来发布新版本
在dev分支上干活,每个人都在自己的分支修改代码,时不时的在dev分支上合并
转载于:https://www.cnblogs.com/hsprout/p/8431387.html
从svn到git开发转变相关推荐
- 命令行操作svn和git和git
前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...
- SVN和Git 介绍,区别,优缺点以及适用范围
SVN: SVN是Subversion的简称,是一个开放源代码的版本控制系统,支持大多数常见的操作系统.作为一个开源的版本控制系统,Subversion管理着随时间改变的数据.这些数据放置在一个中央资 ...
- 【转】SVN 与 GIT 详细对比
[转]SVN 与 GIT 详细对比 git和svn的详细对比 近期就[版本管理工具是否进行切换SVN->Git]的问题进行了讨论,于是对svn和Git进行了相关研究,进而梳理出Git的特点(优. ...
- Linux 下禅道和 SVN、GIT 集成插件发布
Linux 下 SVN.GIT 可以和禅道集成了.在版本库中提交代码就可以自动更新关联禅道的任务和Bug.感谢网友张彪的开发. 一.下载地址 1.源代码:https://github.com/easy ...
- linux svn权限如何打开文件,如何让 SVN 或者 GIT 保留 Linux 文件权限
想问一下各位是怎么让 SVN 或者 GIT 保留 Linux 文件权限的. 背景: 十一期间帮朋友解决一个问题,他们的知识库是用 WordPress 搭建的(which is a stupid cho ...
- 如果从SVN到GIT
本来是题目是从SVN到GIT,但是现在还并没有真正开始做,因为最近工作比较忙. 今天写一下这一段时间对GIT的学习的一些大概的情况的了解和分析. 其实确切地说,并不是从SVN迁移到GIT,因为我并不是 ...
- 话说Svn与Git的区别
把第一条理解到位思想到位了做起来才会有的放矢,其他几条都是用的时候才能体会到 1) 最核心的区别Git是分布式的,而Svn不是分布的.能理解这点,上手会很容易,声明一点Git并不是目前唯一的分布式版本 ...
- 版本控制工具(CVS、SVN、GIT)简介
2019独角兽企业重金招聘Python工程师标准>>> 版本控制工具: 提供完备的版本管理功能,用于存储.追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是软件公司的基 ...
- Svn、Git、GitHub、GitLab、码云 区别
一.吐槽个黑历史 git诞生: git 由Linus Linus花了两周时间自己用C写了一个分布式版本控制系统,在2008 正式上线.(这里和Linux有一段黑历史). github: github代 ...
最新文章
- java regexp_java中使用regexp
- unity 2d摄像机类型_Unity使用笔记2——功能介绍
- mysql慢SQL探测与优化
- “噪声对比估计”杂谈:曲径通幽之妙
- 1-1docker加速器
- C++——容器小整理
- git 删除和复制远程分支
- 关闭防火墙linux 16.04,如何在Ubuntu 16.04上配置和设置防火墙
- HttpClient配置
- linux boa post方式失败,移植boa出现的错误及解决方法
- Tomcat原理剖析及性能调优
- Oracle客户端安装配置crystal reports注意
- 统计学计算机实验教程,清华大学出版社-图书详情-《统计学计算机实验教程——基于Excel软件》...
- 搜索实现vue+Element-ui仿商城搜索
- Axure的基本功能
- 2021-07-17
- html表单的put方法,form表单put、delete方式提交处理
- C语言wifi程序代码,STM32F103 WIFI程序 C语言.docx
- Java实现Base64、DES、AES、RSA加解密以及加密方式之间的区别
- vue element-ui Radio单选框默认值选不中的原因:混用字符和数字
热门文章
- oracle中nextday,Oracle日期函数 next_day
- 计算机网络(1)——应用层(概述到DNS)
- three.js使用飞行控件FlyControls控制相机(vue中使用three.js63)
- Cesium|xt3d绕圈飞行
- JVM(超级无敌认真好用,万字收藏篇!!!!)
- 人工智能神经网络bp算法及其数学演算过程
- 学历差的程序员就该被虐吗?
- Winform读取txt文件内容
- 苍蓝星MyBatis-第一个程序
- linux mkdir命令是什么意思,Linux中mkdir命令起什么作用呢?