Git与版本控制

一、版本控制

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

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

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

二、版本控制工具

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资源管理器和文件管理系统的SVN客户端。

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 上。

三、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仓库区

工作区->暂存区指令:git add 文件名

查看文件状态指令:git status

暂存区->仓库指令:git commit -m '提交描述'

3.3 初始化仓库

  1. 新建一个文件夹,进入该文件夹下,右键选择git bash
    在这里插入图片描述

  2. 在命令行初始化仓库(创建git仓库)
    指令:git init
    在这里插入图片描述回车,此时文件夹下会生成一个".git"隐藏文件夹,证明初始化仓库成功
    在这里插入图片描述

  3. 仓库中添加文件
    先在文件夹下新建一个123.txt文件
    在这里插入图片描述首先通过指令:git add 文件名 将123.txt添加到暂存区,如果要一次添加文件夹下所有文件的话,就使用指令git add *;然后通过指令git status查看文件状态,出现如下
    在这里插入图片描述之后再使用git commit -m '描述信息'将暂存区内的所有文件全部提交到git仓库
    在这里插入图片描述提交结果如下,因为刚才只将一个文件加入暂存区,所以此时提示一个文件受影响。

  4. 修改仓库中的文件信息
    直接修改文件内容,然后重复上述提交步骤提交即可

  5. 删除仓库中的文件信息
    删除文件:使用指令git rm 文件名,从暂存区删除文件
    删除文件夹:使用指令git rm -r 文件夹名称 从暂存区删除文件夹
    最后使用指令git commit -m '提交描述'更新暂存区到仓库
    注意,此步骤删除的不光是仓库内的文件,本地文件也会删除

  6. 如果我们想要删除暂存区或分支上的文件,但本地又需要用,只是不希望这个文件夹被版本控制,可以使用指令git rm -r --cached 文件夹名称
    最后别忘了提交

四、Git远程服务器与gitee(码云)

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

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

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

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

基本概念

  1. 仓库(Repository)
    仓库即你的项目文件夹,你想在gitee上开源一个项目,那就必须要新建一个repository,如果你开源的项目多,那么仓库就越多

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

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

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

  5. 关注(watch)
    即观察,可以随时看到被关注项目的更新

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

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

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

创建仓库

在这里插入图片描述
在这里插入图片描述

五、Git关联远程仓库

5.1 初始化git并配置用户信息

  1. 首先创建一个新的文件夹,内部打开git命令行,执行git init进行初始化
  2. 配置用户信息
    设置用户名:git config --global user.name '用户名'
    设置用户名邮箱:git config -global user.emal '邮箱'

注意:该设置是为了在gitee仓库主页显示是谁提交的文件;如果想要更改信息,重新执行上面的命令即可

查看当前用户配置信息:git config --list

5.2 git 管理远程远程仓库

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

实现过程:
客户端:
第一步: 将本地项目提交到git
第二步: 建立本地与远程仓库的关系

  1. git 克隆操作:将远程仓库的项目地址复制到本地
    命令git clone 仓库地址
    在这里插入图片描述在这里插入图片描述
    此时git远程仓库就被克隆到本地(新建文件夹下)了(不用再初始化了)此时我们使用指令cd 文件夹名称
    在这里插入图片描述可以看到此时命令行就来到了咱们仓库文件夹下了
    至此呢,本地git和远程仓库就建立了联系,可以在本地命令行操控远程仓库的内容了

  2. 使用指令git push 可以将本次仓库提交到远程(如果修改了文件,注意是先提交到缓存区,再提交到仓库,最后提交远程)
    假如我此刻要移除远程仓库下的a.txt文件,步骤如下所示
    在这里插入图片描述

  3. 如果想要更新本地的仓库信息至最新改动,则使用指令git pull即可
    在这里插入图片描述

六、IDEA关联Git

首先idea自身路径需要在英文目录

  1. IDEA配置Git客户端
    File(文件)->Setting(设置)->Version Control(版本控制) -> Git关联Git安装目录下的bin/git.exe执行文件(这个就是git的客户端,类似svn.exe)
    在这里插入图片描述
  2. 下载gitee插件
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210510170930910.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xKVzEyMzQ4Nw==,size_16,color_FFFFFF,t_703. 添加码云账户信息(邮箱,密码)
    注意:登录时,使用邮箱登录
    在这里插入图片描述
  3. 本地项目上传至服务器
    在这里插入图片描述
  4. 服务器项目下载到本地
    在这里插入图片描述在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值