本章节学习目标:
版本控制(Revision control)是一种软件工程技巧籍以在开发的过程中,确保由不同人所编辑的同一档案(项目代码)都得到更新。 为什么要版本控制
- 查看以往的代码修改记录及变化恢复到历史某个时间的代码协同开发时,合并同一文件中不同开发者写的代码协同开发时定位修改代码的责任人统计工作任务量备份源代码项目分享
CVS:早期版本管理软件ClearCase:IBM企业级大型版本管理工具, 收费。VSS:微软推出的版本管理工具, 较少使用SVN:市面最流行的版本管理工具之一,拥有CVS所有功能,修复了CVS的不足GIT:分布式版本管理工具。已经是大势所趋。 2. git介绍
本章节学习目标:
同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。
到 2005 年的时候,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux的缔造者 Linus Torvalds )不得不吸取教训,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统订了若干目标:
速度简单的设计对非线性开发模式的强力支持(允许上千个并行开发的分支)完全分布式 和svn最主要的区别有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量) git与svn区别 svn是集中式版本控制系统
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而编写代码的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新版本的代码,然后编写代码,完成后需要把自己的代码推送到中央服务器。
集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就会非常影响工作效率。
集中式版本控制系统的优点:
在一定程度上看到其他开发人员在干什么,管理员也可以很轻松掌握每个人的开发权限。 集中式版本控制工具缺点更明显:
服务器单点故障容错性差 git是分布式版本控制系统
Git是分布式版本控制系统,它没有中央服务器,每个人的电脑就是一个完整的版本库。这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
svn:是个集中式的版本控制系统。有个中心点(svn服务器),每个客户端都对中心点有强依赖。
一旦svn服务器出错,所有人都不能再进行版本控制了
每个人都必须要联网,连接上svn服务器才可以进行版本控制
git:是个分布式的版本控制系统。没有中心点,每个人都可以独立进行版本控制
即使没有联网,每个人也可以进行版本控制
四、git安装 最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上运行。后来也把git移植到了Windows上。现在,Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行。由于开发机大多数情况都是windows,所以这里只讲解windows下的git的安装及使用。
1. 软件下载下载地址:https://git-scm.com/download
参考资料中已经提供好了安装包
双击TortoiseGit安装包,选择安装路径。
注意:安装路径里不要有中文、空格、特殊字符
##### 2) 选择语言
安装后会进入首次配置向导。选择语言:English
选择刚刚安装git.exe的目录
4) 设置个人信息
设置开发者的姓名和邮件。每次提交代码时都会把此信息包含到提交的信息中。名称和邮箱:名称建议使用英文字母+数字;邮箱建议使用真实邮箱
3.2 配置语言
1) 安装语言包
安装语言包:直接双击即可安装语言包
在桌面上空白位置右键,打开TortoiseGit的设置
安装完成之后,需要重启电脑
五、git使用 1. git的工作流程【理解】本章节学习目标:
- clone:从远程仓库中克隆 Git 资源作为本地仓库,第一次从远程仓库下载一个项目。checkout:从本地仓库中checkout代码然后进行代码修改。主要是分支的操作【目前先不管】add:在提交前先将代码提交到暂存区。commit:提交修改。提交到本地仓库工作区。本地仓库工作区中保存修改的各个历史版本。push:在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库。
本章节学习目标:
- 能够使用小乌龟初始化本地仓库能够设置忽略资源能够添加文件到暂存区,提交文件能修改文件并提交能查看历史记录、比较差异、恢复代码能删除文件
修改后未提交文件图标是红色的感叹号。
在开发过程中可能会经常查看代码的修改历史,或者叫做修改日志。来查看某个版本是谁修改的,什么时间修改的,修改了哪些内容。
可以在文件上或空白处点击右键选择“显示日志”来查看文件的修改历史。
假如写了很多代码后发现方向错误,要恢复到以前的版本,可以分两种情况进行恢复:
1. 还没有提交,要恢复如果文件修改后还没有提交,可以直接还原。
例如我们又修改了pom.xml,但是还没有提交。在文件上右键直接还原
如果某些文件没用了,需要删除掉。这时可以
- 使用git提供的删除功能,直接将文件从版本库中删除。删除后提交到版本库
本章节学习目标:
现在我们已经在本地创建了一个Git仓库。假如又需要让其他人来协作开发,就可以把本地仓库同步到远程仓库,同时还增加了本地仓库的一个备份。
常用的远程仓库就是github:https://github.com/,或者码云 https://gitee.com (国内版本的GitHub)
接下来我们演示如何将本地代码同步到码云gitee。gitee和GitHub的操作一模一样
1.1 注册gitee帐号要求每个人都注册一个gitee帐号
1.2 在gitee创建仓库通常是一个项目,要创建一个仓库
1. 新建仓库 2. 设置仓库名称通常是把项目名称 作为 仓库名称来使用开源:这个仓库里的所有内容,可以被所有人看得到,被所有人下载仓库的内容。但是其它人不能修改私有:这个仓库里的内容,只有自己和设置的成员可以看到,其它人看不到 3. 查看仓库地址
HTTPS地址是:https://gitee.com/liuyp100/rbac.gitSSH地址是:git@gitee.com:liuyp100/rbac.git 2. 推送代码到gitee
本章节学习目标:
创建gitee仓库后,如果我们要把自己本地仓库的代码推送到gitee远程仓库,就需要提供gitee身份验证信息、加密信息。gitee支持两种代码同步方式:https和ssh。
https方式:每次把本地仓库代码推送到远程仓库,都需要输入自己的gitee帐号和密码
ssh方式:每次把本地仓库代码推送到远程仓库时,不需要提供自己的gitee帐号和密码
但是需要我们生成一对密钥:公钥配置到gitee上,私钥自己保留
后续每次推送时,gitee都会验证公钥和私钥是否匹配。如果匹配,就可以推送
如果使用https很简单基本不需要配置就可以使用,但是每次提交代码和下载代码时都需要输入用户名和密码。而且如果是公司配置的私有git服务器一般不提供https方式访问,所以我们着重说明“ssh”方式。
什么是SSH协议 SSH,全称是Secure Shell,是建立在应用层基础上的安全协议外壳。
最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
通过使用SSH,可以把所有网络传输的数据进行加密。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。 生成SSH密钥
在windows下我们可以使用 Git Bash.exe来生成密钥,右键菜单打开Git Bash。
- 在桌面上右键,选择 “Git Bash Here”,打开git bash界面执行命令,生成密钥。
命令:ssh-keygen -t rsa,然后一路回车,采用默认配置 查看生成的密码:
执行命令完成后,在C:Users用户名.ssh下面生成如下名称的公钥和私钥:
公钥:需要上传到gitee
私服:需要配置到自己的客户端
在桌面上右键,打开TortoiseGit的设置界面
- 在本地仓库的工作目录里推送代码
2.设置远程仓库的信息
3.点击“确定”开始推送
初次从远程仓库里获取项目代码的过程,叫克隆。克隆后会创建一个新的本地仓库。选择一个任意文件夹,然后使用TortoiseGit克隆远程仓库。
- 在桌面上空白位置右键,克隆
. 查看克隆下来的代码
如果其它人向远程仓库里推送了代码,我们需要从远程仓库获取最新代码。
使用小乌龟TortoiseGit,从右键菜单中点击“拉取”
拉取代码,如果没有冲突会拉取成功。如果有冲突会拉取失败
拉取后在所有冲突的文件上,会有感叹号图标。我们需要挨个解决所有的冲突
拉取后:
右键提交,在弹出的窗口里选择“提交”;然后推送到远程仓库
4. 通知对方拉取最新代码 七、git整合idea 1. idea配置git 1.1 配置git注意:建议使用idea2018.2(idea2019.2版本可能有问题)
说明:在idea里使用git,是基于project操作的。
在大型项目开发中,通常是一个项目要创建一个project,其中有很多Module;这多个Module共同组成一个完整的项目
2. 添加工程到gitee注意:在做一切添加、提交、推送等操作之前,先设置忽略文件
2.1 设置忽略文件(不推送.idea和iml以及所有编译target文件)可以在工程里手动创建.gitignore文件,编写要忽略的文件。也可以使用idea的.ignore插件来辅助编写。
在父工程上右键,创建文件,名称为.gitignore
在.gitignore文件中,增加target、.idea、*.iml三项
target/ *.iml .idea/2.2 创建本地仓库 2.3 将工程添加到本地仓库 1. 添加到暂存区
略
2. 推送到远程仓库 3. 从远程仓库克隆 4. 断开git 4.1 删除.git目录


