1.版本控制

如果在开发团队中没有使用版本控制,多个开发人员共同负责同一个软件或文档的开发,每个人在各自 的机器上有整个软件文档的备份,并对之实施编程开发,在分别完成各自任务之后,再通过文本比对工 具将各自机器上的不同版本的程序整合到一台机器上。没有进行版本控制或者版本控制本身缺乏正确的 流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的 事务性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。

版本控制的目的是实现开发团队并行开发、提高开发效率的基础。其目的在于对软件开发进程中文件或 目录的发展过程提供有效的追踪手段,保证在需要时可回到旧的版本,避免文件的丢失、修改的丢失和 相互覆盖,通过对版本库的访问控制避免未经授权的访问和修改,达到有效保护企业软件资产和知识产 权的目的。

版本控制的功能在于跟踪记录整个软件的开发过程,包括软件本身和相关文档,以便对不同阶段的软件 及相关文档进行表示并进行差别分析,对软件代码进行可撤消的修改,便于汇总不同开发人员所做的修 改,辅助协调和管理软件开发团队。

2.版本控制工具

2.1.Visual Source Safe(简称VSS)

VSS是美国微软公司的产品,目前常用的版本为6.0版。VSS是配置管理的一种很好的入门级的工具。

易学易用是VSS的强项,VSS采用标准的windows操作界面,只要对微软的产品熟悉,就能很快上手。 VSS的安装和配置非常简单,对于该产品,不需要外部的培训(可以为公司省去一笔不菲的费用)。只 要参考微软完备的随机文档,就可以很快的用到实际的工程当中。

VSS的配置管理的功能比较基本,提供文件的版本跟踪功能,对于build和基线的管理,VSS的打标签的 功能可以提供支持。VSS提供share(共 享)、branch(分支)和合并(merge)的功能,对于团队的开发 进行支持。VSS不提供对流程的管理功能,如对变更的流程进行控制。

VSS不能提供对异地团队开发的支持。此外VSS只能在windows平台上运行,不能运行在其他操作系统 上。 有软件提供商提供VSS插件,可以同时解决VSS跨平台和远程连接两个问题,例如 SourceAnywhere for VSS, SourceOffSite等。

VSS的安全性不高,对于VSS的用户,可以在文件夹上设置不可读,可读,可读/写,可完全控制四级权 限。但由于VSS的文件夹是要完全共享给用户后,用户才能进入,所以用户对VSS的文件夹都可以删 除。这一点也是VSS的一个比较大的缺点。

VSS没有采用对许可证进行收费的方式,只要安装了VSS,对用户的数目是没有限制的。因此使用VSS的 费用是较低的。

微软不再对VSS提供技术支持。

2.2.Concurrent Version System(简称CVS)

CVS是开发源代码的配置管理工具,其源代码和安装文件都可以免费下载。

CVS是源于unix的版本控制工具,对于CVS的安装和使用最好对unix的系统有所了解能更容易学习, CVS的服务器管理需要进行各种命令行操作。目前,CVS的客户端有winCVS的图形化界面,服务器端也 有CVSNT的版本,易用性正在提高。

CVS的功能除具备VSS的功能外,还具有:

它的客户机/服务器存取方法使得开发者可以从任何因特网的接入点存取最新的代码;它的无限制的版 本管理检出(checkout)的模式避免了通常的 因为排它检出模式而引起的人工冲突;它的客户端工具可以 在绝大多数的平台上使用。同样,CVS不提供对变更流程的自动管理功能。

一般来说,CVS的权限设置单一,通常只能通过CVSROOT/passwd, CVSROOT/readers, CVSROOT/writers文 件,同时还要设置CVS REPOS的物理目录权限来完成权限设置,无法完成复杂的 权限控制;但是CVS通过CVS ROOT目录下的脚本,提供了相应功 能扩充的接口,不但可以完成精细的 权限控制,还能完成更加个性化的功能。

CVS是开发源码软件,无需支付购买费用。

同样因为CVS是开发源码软件,没有生产厂家为其提供技术的支持。如发现问题,通常只能靠自己查找 网上的资料进行解决。

2.3.SVN

SVN全名Subversion,即版本控制系统。

SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系 统,Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库中。 这个档案库很像一 个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏 览文件的变动历史。Subversion 是一个通用的系统, 可用来管理任何类型的文件, 其中包括了程序源 码。

SubVersion:实现服务系统的软件。

TortoiseSVN:是SVN客户端程序,为windows外壳程序集成到windows资源管理器和文件管理系统的 Subversion客户端。

SVNService.exe:是专为 SubVersion 开发的一个用来作为 Win32 服务挂接的入口程序。

AnkhSVN:是一个专为Visual Studio提供SVN的插件。

2.4.Git

Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理.

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开 发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开 放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发 是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 最近就迁移到 Git 上来了,很多 Freedesktop 的项目也迁移到了 Git 上。

3.Git的使用

Git 与 SVN 区别

  • 1、Git 是分布式的,SVN 不是:

    • 这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
  • 2、Git 把内容按元数据方式存储,而 SVN 是按文件:
    • 所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.git 等的文件夹里。
  • 3、Git 分支和 SVN 的分支不同:
    • 分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。Git 分支是指针指向某次提交,而 SVN 分支是拷贝的目录。这个特性使 Git 的分支切换非常迅速,且创建成本非常低。
    • Git 有本地分支,SVN 无本地分支。在实际开发过程中,经常会遇到有些代码没写完,但是需紧急处理其他问题,若我们使用 Git,便可以创建本地分支存储没写完的代码,待问题处理完后,再回到本地分支继续完成代码。
  • 4、Git 没有一个全局的版本号,而 SVN 有:
    • 目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征
  • 5、Git 的内容完整性要优于 SVN:
    • Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网
    • 络问题时降低对版本库的破坏。

3.1安装

下载地址:https://www.git-scm.com/download/win

检验是否安装成功,桌面上鼠标右击后:

3.2 git的工作区域

(1)工作区:用来对代码进行修改

(2)暂存区

(3)git仓库区

  • 工作区->暂存区

    • git add 文件名
  • 暂存区->仓库
    • git status 先查看文件状态
    • git commit -m “提交描述”
  • 本地仓库到远程仓库
    • git push

3.3 初始化仓库

  • (1)新建文件夹,进入到该目录,右键打开git bash
  • (2)在文件夹内初始化git(创建git仓库)
    • 命令:git init (会生成一个.git的隐藏文件)
  • (3)仓库中添加信息
    • git add 文件名-> 结果:new file:文件名 //工作区到暂存区
    • git add * 添加所有文件
    • git commit -m ‘描述信息’ //暂存区到仓库
  • (4)仓库中修改信息
    • 在文件中修改完成后按照原来的程序再执行
  • (5)删除a文件夹下所有文件
    • git rm a/*
  • 从b文件夹进入b中的c文件夹
    • cd c

4. Git远程服务器介绍

4.1 GitHub介绍

通过git管理github托管项目代码

gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。

gitHub于2008年4月10日正式上线,除了git代码仓库托管及基本的 Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册用户已经超过350万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby,on Rails、jQuery、python等。
访问地址:https://github.com/

4.2.GitLab

GitHub 和 GitLab 都是基于 web 的 Git 仓库,使用起来二者差不多,它们都提供了分享开源项目的平台,

为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所。

GitHub 作为开源代码库,拥有超过 900 万的开发者用户,目前仍然是最火的开源项目托管平台,GitHub 同时提供公共仓库和私有仓库,但如果使用私有仓库,是需要付费的。 GitLab 解决了这个问题,你可以在上面创建私人的免费仓库。

GitLab 让开发团队对他们的代码仓库拥有更多的控制,相比较 GitHub , 它有不少特色:

  • (1) 允许免费设置仓库权限;
  • (2) 允许用户选择分享一个 project 的部分代码;
  • (3) 允许用户设置 project 的获取权限,进一步提升安全性;
  • (4) 可以设置获取到团队整体的改进进度;
  • (5) 通过 innersourcing 让不在权限范围内的人访问不到该资源;

所以,从代码的私有性上来看,GitLab 是一个更好的选择。但是对于开源项目而言,GitHub 依然是代码托管的首选。

访问地址:https://git.lug.ustc.edu.cn/users/sign_in

logo:

4.3 gitee(码云)

码云(Gitee)是 OSCHINA 推出的代码托管协作开发平台,支持 Git 和 SVN,提供免费的私有仓库托管。2016 年推出企业版,提供企业级代码托管服务,成为开发领域领先的 SaaS 服务提供商。

使用 GitHub 时,国内的用户经常遇到的问题是访问速度太慢,有时候还会出现无法连接的情况。如果你希望体验 Git 飞一般的速度,可以使用国内的代码托管与开发协作平台 —— Gitee。除了访问速度更快以外,Gitee 还提供了免费的私有仓库供个人开发者使用。同时,Gitee 也有着国内数一数二的开源生态,这里有非常多的优秀开源项目和开发者,你可以在这里和他们无障碍地沟通交流,不管是找开源项目还是分享自己的开源项目,Gitee 都是极佳的选择。

作为国内代码托管平台的佼佼者,目前已经有超过 500 万名开发者在 Gitee 上托管了 1000 余万个代码仓库,而其提供了研发管理、代码托管、文档管理服务的企业版的服务客户也超过了 10 万家。

访问地址:https://gitee.com/

4.4 注册账号

地址:https://gitee.com/

4.5. 基本概念

(1) 仓库(Repository)

仓库即你的项目,你想在github上开源一个项目,那就必须要新建一个repository,如果你开源的项目多,那你拥有的仓库也就很多

(2) 收藏(star)

仓库主页的star按钮,意思是收藏项目的人数。

(3) 复制克隆项目(fork)

在原项目的基础上新增代码和结构,也可以理解成拿别人的代码进行二次加工。Fork后,会在自己账号下,生成自己的相同仓库

(4) 发起请求(pull request,简称PR)

这个是基于fork的,当其他人改进完代码后,想将这个项目合并到原项目,则这个时候会给你发起一个pull request。如果接受了请求,这个时候就可以拥有改进的项目了

(5) 关注(watch)

即观察,可以随时看到被关注项目的更新

(6) 事务卡片(Issue)

发现代码有bug,但是目前还没成型,需要讨论时使用当别人发现你的问题时,会提个lssue

(7) Gitee主页

账号创建完后,点击导航栏gitee图标即可进入主页。左侧显示功能列表,右侧显示仓库动态

(8) 仓库主页

仓库主页主要显示项目的信息,如:代码,版本,收藏,关注,fork等

4.6.创建仓库

一个git库对应一个开源项目

仓库主页说明

4.7 仓库管理

新建文件

编辑/删除文件

被删除的文件如何查看信息:

上传文件(可以同时选择多文件):

下载项目:

Gitee issue(问题)

张三发现李四的开源git,提交issue,李四登录gitee后,和张三交流并关闭issue

4.8 基本概念实战

收藏,关注,复制克隆项目,发起请求,事务卡片

删除仓库:

4.9 初始化git的基本信息

设置登录的账户信息: 用户名和邮箱地址是本地git客户端的一个变量,每次commit都会用用户名和邮箱纪录。

  • 初始化:git init
  • 设置用户名: git config --global user.name ‘用户名’
  • 设置用户名邮箱: git config --global user.email ‘邮箱’
  • 实例: git config --global user.email ‘123@qq.com’
  • 命令执行位置:桌面右击->git base here
    • 注意:该设置在gitee仓库主页显示谁提交的文件,如果想要修改用户信息,则将该命令再执行一次
  • 查看设置: git config --list

4.10 git管理远程仓库

目的:备份,实现代码共享

实现过程:

客户端:

  • (1)将本地项目提交到git
  • (2)建立本地和远程仓库的关系

步骤1:

git克隆操作:将远程仓库的项目复制到本地

命令: git clone 仓库地址

仓库地址:

注意:初始化操作使用一次即可

步骤2: git push 将本地仓库提交到远程(注意先提交到缓存区,再提交到仓库,最后提交远程)

步骤3:要更新你的本地仓库至最新改动,执行: git pull 从非默认位置更新到指定的url。

git pull http://git.example.com/project.git

实例:

Cd 进入仓库

5.idea+git

Idea关联git

Idea自身路径需要在英文目录

1)Idea配置Git客户端:

File — Settings---Version Control — Git关联Git安装目录下的

bin/git.exe执行文件(这个就是git的客户端指令,类似svn.exe)

Step1:配置git的命令执行路径

  • 安装Git工具后在IEDA里的配置git的命令执行路径

Step2:下载gitee插件

Step3.添加信息

注意:登录时,使用邮箱登录

Step4.本地项目上传到服务器

方法一:

方法二:

在IEDA中创建一个同名JavaWeb项目,src中随便建一个类不为空

Step5.服务器项目下载到本地

  • 在IDEA中从码云下载项目,下载的地址就是在git中克隆的位置
  • https://gitee.com/mayaole/gyfdemo01.git
  • 以后就在这个仓库上开发

方法一:

方法二:

然后把git的仓库地址复制,如图,然后点clone复制份到本机桌面的某个文件夹下这前的空项目就不再用了

Step6.添加文件到暂存区

  • 添加定单功能,多写个OrderServlet文件

如果不小心选中了No,可以通过另一种方式添加到本地仓库缓存

如图,点击文件右键

Step7.commint代码到本地仓库

  • 提交代码并写上备注到主杆

Step8.修改文件并提交

  • 再次任意修改添加文件,然后提交

Step9.push代码到服务器

在推的过程中,会弹出输入git服务器的用户名和密码,输入即可

推送成功后,在码云服务器会看到更新的功能

Step10.添加分支1.0

  • 再写点功能,再写个UserService提交,然后发布1.0版本,添加分枝
选择创建分枝

或在idea右下角

新创建一个分枝

Step11.切换回主杆

Step12.开发2.0

  • 在主杆上进行2.0的开发,添加邮件发送功能

Step13.修复1.0 bug

  • 切换回1.0分枝,进行Bug修复,然后提交

push1.0代码到服务器

Step14.再把主干push到服务器

  • 不要忘记把主杆也推上服务器,先切换回主杆,再push

Step15.合并1.0分支

  • 将master分枝与1.0分枝合并
  • 合并后,就把master推上服务器
  • 从mater中创建2.0分枝,那么master就是3.0分枝了,然后把2.0推到服务器

Step16.提交历史记录查看

Step17.对比不同版本的区别

Step18.回退到上一个版本

  • 比如你误删了一段代码(方法),但又提交了,可以使用下面的get来进行回退

Step19. 团队开发,解决冲突

  • 不同成员在同一个文件中修改或者添加代码
  • 然后push到服务器会失败,因为代码冲突了
合并前

合并后,然后再次push即可以了

注意:A开发者更新后,另一个开发者可以重新pull更新代码到本地

javaWeb—9.Git相关推荐

  1. JavaWeb项目中如何扩展一个Request对象——包装器HttpServletRequestWrapper

    一.使用场景 在一个JavaWeb中我们会遇到统一处理出入参或者处理特殊参数的场景,这些场景就需要我们扩展我们的Request对象.所谓的包装器就是在原来的基础上包装一下就是在原来功能上添加一些其他功 ...

  2. JavaWeb Cookie详解

    代码地址如下: http://www.demodashi.com/demo/12713.html Cookie的由来 首先我们需要介绍一下,在Web开发过程中为什么会引入Cookie.我们知道Http ...

  3. 利用Jenkins实现JavaWeb项目的自动化部署

    修改代码,打包,上传,重启... 大把的时间花费在这些重复无味的工作上.笔者与当前主流的价值观保持一致:我们应该把时间花费在更有意义的事情上.我们可以尝试借助一些工具,让这些重复机械的工作交给计算机去 ...

  4. JavaWeb完整项目要用到的专业技能

    完成JavaWeb项目用到哪些专业技能?在经典的JavaWeb的开发模式中,我们使用Jsp技术来作为展现层的实现,其实也就是所谓的前端.Web开发中经典的MVC模式,Model-View-Contro ...

  5. java web开发技术大_2021年六大javaweb开发主流技术

    作为历史最为悠久的编程语言--java,历经数十年依然盘踞在编程榜最前面的位置,这与它的技术和应用范围是分不开的,同时呢,javaweb开发主流技术更是java开发者时时刻刻关注的问题,接下来我们一起 ...

  6. eclipse弃坑记第一篇之在idea上配置Tomcat环境并创建Javaweb项目的详细步骤原创

    IntelliJ IDEA是一款功能强大的开发工具,在代码自动提示.重构.J2EE支持.各类版本工具(如git.svn.github).maven等方面都有很好的应用. IntelliJ IDEA有免 ...

  7. javaweb 常用jar包_使用javaweb写一个登录案例

    下载地址:https://gitee.com/dl_shrimp/java_web_login_case.git https://www.zhihu.com/video/124178088859969 ...

  8. Docker实战部署JavaWeb项目-基于SpringBoot

    最近在滴滴云上看到服务器很便宜,1核2G,1年只需要68块钱.下面是我基于Docker部署Javaweb服务的过程.目前我见过的最便宜的服务器,阿里云打折的时候都没有这么便宜啊,果断入手.有需要的话可 ...

  9. 基于IDEA的JavaWeb开发环境搭建

    基于IDEA的JavaWeb开发环境搭建 基于IDEA的JavaWeb开发环境搭建 jdk下载安装配置环境变量 下载 安装 配置环境变量 下载安装激活使用IntelliJ IDEA 下载 安装 激活 ...

  10. web和python前景_我想了解一下pythonweb和javaweb比较详细的学习成本和应用前景,谢谢!?...

    Javaweb需要掌握的知识点: mysql与jdbc:mysql.jdbc.连接池,jdbc Template 前端技术:html5.css3.javascript,bootstrap: 学习完了h ...

最新文章

  1. echarts折线图修改背景颜色_不会美化Excel图表?学会这招!小白也能轻松做出高逼格的折线图...
  2. SAP VLPOD 报错 - Update control of movement type is incorrect (entry 107 X X E B _ E) - 之对策
  3. js删除字符串的最后一个字符三种方法
  4. CDesktopView类
  5. 《我在51CTO微职位学软考——奋发之路》
  6. Algorithm之EM:Expectation Maximization简介、代码实现
  7. 花生壳For Linux安装步骤
  8. pythonargmaxaxis1_np.argmax(input,axis)和tf.argmax(input,axis)使用
  9. T4 Templates and the Entity Framework
  10. STM32F4: Generating parallel signals with the FSMC
  11. 2017年全国计算机软件水平考试报名时间和报名入口网址
  12. 你到底是前端人还是搬砖人?推荐一款国产摸鱼神器!
  13. c语言解除键盘锁定,笔记本键盘锁定,教您笔记本解除键盘锁定
  14. python人民币小写转大写_python人民币小写转大写辅助工具
  15. 提取单元格中某字符最后出现位置之前的数据
  16. 文件里的三个重要时间:access time(访问时间), modify time(修改时间), change time(状态改动时间)
  17. 主成分分析(PCA)原理及推导
  18. 大学英语综合教程四 Unit 4 课文内容英译中 中英翻译
  19. springboot引入rabbit mq
  20. 初识Latex及模板套用

热门文章

  1. keil安装、注册及pack包安装
  2. 计算机北桥芯片结构图,电脑主板芯片维修教程第一节:电脑主板你是否真的认识...
  3. 十八个经典问答,讲透了RS485接口!-小白收藏
  4. Syslog架设windows日志服务器
  5. Qtalk 0.2.0版本(基于Qt的局域网聊天软件)
  6. HTML5超炫3D雷达扫描地图玩法
  7. 你们要的网络电话软件测评来了
  8. php开发oa系统的插件下载不了,OA系统安装不了office控件的解决方法
  9. 专业卸载工具Your Uninstaller! Pro
  10. 周奕与共享软件(转)