前言:目前的公司的开发技术还是处于刀耕火种的年代,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 commitgit 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开发转变相关推荐

  1. 命令行操作svn和git和git

    前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...

  2. SVN和Git 介绍,区别,优缺点以及适用范围

    SVN: SVN是Subversion的简称,是一个开放源代码的版本控制系统,支持大多数常见的操作系统.作为一个开源的版本控制系统,Subversion管理着随时间改变的数据.这些数据放置在一个中央资 ...

  3. 【转】SVN 与 GIT 详细对比

    [转]SVN 与 GIT 详细对比 git和svn的详细对比 近期就[版本管理工具是否进行切换SVN->Git]的问题进行了讨论,于是对svn和Git进行了相关研究,进而梳理出Git的特点(优. ...

  4. Linux 下禅道和 SVN、GIT 集成插件发布

    Linux 下 SVN.GIT 可以和禅道集成了.在版本库中提交代码就可以自动更新关联禅道的任务和Bug.感谢网友张彪的开发. 一.下载地址 1.源代码:https://github.com/easy ...

  5. linux svn权限如何打开文件,如何让 SVN 或者 GIT 保留 Linux 文件权限

    想问一下各位是怎么让 SVN 或者 GIT 保留 Linux 文件权限的. 背景: 十一期间帮朋友解决一个问题,他们的知识库是用 WordPress 搭建的(which is a stupid cho ...

  6. 如果从SVN到GIT

    本来是题目是从SVN到GIT,但是现在还并没有真正开始做,因为最近工作比较忙. 今天写一下这一段时间对GIT的学习的一些大概的情况的了解和分析. 其实确切地说,并不是从SVN迁移到GIT,因为我并不是 ...

  7. 话说Svn与Git的区别

    把第一条理解到位思想到位了做起来才会有的放矢,其他几条都是用的时候才能体会到 1) 最核心的区别Git是分布式的,而Svn不是分布的.能理解这点,上手会很容易,声明一点Git并不是目前唯一的分布式版本 ...

  8. 版本控制工具(CVS、SVN、GIT)简介

    2019独角兽企业重金招聘Python工程师标准>>> 版本控制工具:  提供完备的版本管理功能,用于存储.追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是软件公司的基 ...

  9. Svn、Git、GitHub、GitLab、码云 区别

    一.吐槽个黑历史 git诞生: git 由Linus Linus花了两周时间自己用C写了一个分布式版本控制系统,在2008 正式上线.(这里和Linux有一段黑历史). github: github代 ...

最新文章

  1. java regexp_java中使用regexp
  2. unity 2d摄像机类型_Unity使用笔记2——功能介绍
  3. mysql慢SQL探测与优化
  4. “噪声对比估计”杂谈:曲径通幽之妙
  5. 1-1docker加速器
  6. C++——容器小整理
  7. git 删除和复制远程分支
  8. 关闭防火墙linux 16.04,如何在Ubuntu 16.04上配置和设置防火墙
  9. HttpClient配置
  10. linux boa post方式失败,移植boa出现的错误及解决方法
  11. Tomcat原理剖析及性能调优
  12. Oracle客户端安装配置crystal reports注意
  13. 统计学计算机实验教程,清华大学出版社-图书详情-《统计学计算机实验教程——基于Excel软件》...
  14. 搜索实现vue+Element-ui仿商城搜索
  15. Axure的基本功能
  16. 2021-07-17
  17. html表单的put方法,form表单put、delete方式提交处理
  18. C语言wifi程序代码,STM32F103 WIFI程序 C语言.docx
  19. Java实现Base64、DES、AES、RSA加解密以及加密方式之间的区别
  20. vue element-ui Radio单选框默认值选不中的原因:混用字符和数字

热门文章

  1. oracle中nextday,Oracle日期函数 next_day
  2. 计算机网络(1)——应用层(概述到DNS)
  3. three.js使用飞行控件FlyControls控制相机(vue中使用three.js63)
  4. Cesium|xt3d绕圈飞行
  5. JVM(超级无敌认真好用,万字收藏篇!!!!)
  6. 人工智能神经网络bp算法及其数学演算过程
  7. 学历差的程序员就该被虐吗?
  8. Winform读取txt文件内容
  9. 苍蓝星MyBatis-第一个程序
  10. linux mkdir命令是什么意思,Linux中mkdir命令起什么作用呢?