版本控制器SVN、Git
Git 与 SVN 区别
Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。 如果你是一个具有使用 SVN
背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。
Git 与 SVN 区别点:
-
Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
-
Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs
等的文件夹里。 -
Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
-
Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
-
Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1
哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
SVN
1.SVN工作机制
-
检出(Checkout)把服务器端版本库内容完整下载到本地。在整个开发过程中只做一次。
-
更新(Update)把服务器端相对于本地的新的修改下载到本地。
-
提交(Commit)把本地修改上传到服务器。
2.idea使用SVN
(1)下载svn的客户端,通俗一点来说就是小乌龟啦!官网下载地址:https://tortoisesvn.net/downloads.html!
(2)下载之后直接安装就好了,但是要注意这里,选择安装所有的命令行客户端工具,默认是不安装的,如果不安装,svn中的bin目录下就会没有svn.exe,这个待会会用到,所以一点要注意哦。(都是坑啊)
然后就下一步下一步就安装好了。
第二步:如果已经搭建好了svn服务的话,就要开始在idea中配置相关的配置了,如下图:
看红圈内的就是安装svn(小乌龟)bin目录下的svn.exe 然后点击apply和OK就可以了。
第三步:检出代码 ,跟着图走就好了
然后选中url,点击Checkout
接着选择你项目检出的目录,如果是多库项目(就是不是一个单独项目的,就像使用dubbo)建议单独放一个文件夹,否则看上去会觉得很乱。
选好存放目录后,出现下面这个选择对应的版本号,一般都是使用默认的
然后代码就检出到本地了
第三步:项目的提交更新,如下图
项目右键点击subversion就有许多选项,这些选项的作用如下
这样就是愉快的使用svn了
项目导入svn仓库
1.准备工作【可跳过】
2.找到share Project选项【第一步】
3.将项目存放到svn仓库【第二步】
4.选择版本
5.添加功能
6.导入完成
Git
1.Git是什么
- Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
- Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
- Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
2.Git常用命令
克隆项目:git clone xxx.git
创建分支:git branch daily/1.0.0
切换分支:git checkout daily/1.0.0
查看本地分支:git branch
查出远程分支:git branch -r
查看本地远程分支:git branch -a
创建并切换分支:git checkout -b daily/1.0.0
删除本地分支:git branch -d daily/1.0.0
强制删除本地分支:git branch -D daily/1.0.0
查看分支状态:git status
添加文件到git: git add file1 file2
添加所有文件: git add .
拉取文件 : git pull
提交文件: git commit -m ‘注释’
拉主干:git pull origin master
合并主干:git merge master
编译:npm run build
更新分支:git pull -u origin daily/1.0.0
推送代码到远端:git push -u origin daily/1.0.0
打tag: git tag publish/1.0.0
发布到主干:git push -u origin publish/1.0.0
暂存隐藏 git stash
显示 git stash pop
3.idea使用Git
- IntelliJ IDEA->Performance->Version Control->git
将自己安装git的可执行文件路径填入Path to Git executable,点击 Test测试一下
上传项目到git仓库
在你的idea里新建git仓库,这是新建本地仓库,等会会同步到线上git仓库
新建后如果代码不是文件名不是绿色的表示没有加入到git索引中将需要上传的文件按照下图方式add
添加后,相应的文件名会变成绿色然后commit项目,提交项目,
这里是先提交带本地仓库,然后push到线上仓库。注意这里和svn不一样。
这里一定要选择commit and push .(先提交带本地仓库,然后push到线上仓库)
从git仓库检出项目
选择checkout
更新项目、解决冲突
按照图片中的步骤,顺序不能乱,先stash,然后pull,最后unstash
stash会让你输入标记名称,unstash的时候选择想要的标记
如果代码有冲突,我们需要编辑冲突,我们一般选择merge,就是合并的意思,当然你也可以不合并直接使用线上的或者暂存里的代码。
合并代码的时候,图片中描述了,三屏分别对应的是什么。
切换git分支
右下角有个当前分支名称,点击会谈出一分支信息。如果你想切换分支,选中分支,点击右键checkout即可。
idea中git回退本地仓库版本
-
场景:代码commit到本地仓库,还没有push到远程仓库,这时要回退代码。
介绍下Reset Head中三种Reset Type类型: 1.Mixed(默认):它回退到某个版本,本地会保留源码,回退commit和index信息,若要提交重新commit。 2.soft: 回退到某个版本,只回退了commit的信息,不会恢复到index file一级,若要提交重新commit。 3.Hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容。 操作如下: 拿ConfigServerApplication类中的fun() 方法来验证,每次提交修改方法中的数据,目前本地仓库的记录是10,远程仓库的记录是8,如下: