Git
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git的读音为/gɪt/。
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理
版本控制
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理
常见的版本控制:
- 手动版本控制,自己手动管理,但是当项目大时就可能出现问题
- 本地版本控制:RCS等,当将文件检入RCS时,会在当前目录下的./RCS/目录中创建相应的历史文件。该文件后缀有.v;RCS使用反向增量方案来存储文件更改
- 集中式版本控制:CVS、SVN
在单机版本控制工具基础上添加了网络,使其网络化协作化
代码都都存储在服务器端,开发者需从服务器上获得一份代码复制到本机,然后开发。开发者可随时将新代码提交给服务器,也可以通过更新操作获得最新的代码,保持与其他开发者的一致,所有操作都需要通过服务端进行同步
CVS:
SVN:改善CVS,实现更强大的集中式解决方案
- 分布式版本控制:Git
分布式VCS,无需集中式的中央服务器。在Git中所有副本都是相等的,即便是远程Git服务器也是等价的副本
类似与客户端Git也带有服务器
关于Git程序
下载安装Git程序,当安装好Git后
在菜单项会有:
-
Git Bash:命令行界面,类似与Unix与Linux风格,常用
-
Git CMD:Windows风格的命令行
-
Git GUI:图形界面的Git,有命令行就够了,图形化界面又丑又难用
当然,我们使用Git并不会用菜单栏,而是直接到对应的文件夹,点击右键
然后使用Git Bash Here,就是打开Git的命令行界面
关于暂存区、工作区
当在一个文件夹内初始化git init
就会创建.git隐藏目录(windows需要点开隐藏的项目)
这个文件夹是一个版本库,其中称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD
试试:
我们可以创建一个文件a.html,在git add .
点开.git文件夹
index文件,就是暂存区(stage),HEAD是指向master的指针
如果没有提交是不会有index的,这里有点Unix的万物皆文件的思想
可以大致总结:从本地目录到远程仓库GitHub的过程
注意:
当要连接远程仓库如gitHub时,需要将本地仓库与远端仓库建立一个链接git remote add origin
如:
git remote add origin https://gitee.com/zfkhhh/DataStructures.git
分支
在Git初始化文件夹时,会默认创建一个master主分支,HEAD指针指向该分支
我们的每一次提交都类似与设置了一个时间点,在提交时Git会把它们串成一条线(版本控制)
而master也类似与指针,指向最新的版本
我们设置一个分支dev,即类似与多了一条指针指向版本3
切换到该dev分支(HEAD指针指向该分支),当我们用dev分支提交了一个新版本
重新回到master分支(HEAD指针)
合并:将master推向新版本
具体操作
-
用master将a.html 提交,版本1
git status
查看版本库状态(有没有文件没有提交)
-
用
git checkout -b dev
创建新分支并切换到该分支并创建b.txt文件提交,版本2
git checkout -b dev
简化:
git branch dev
git checkout dev
- 切换到master分支,把master分支合并到版本2
git merge dev
git merge
合并指定分支到当前分支
GitHub与Gitee
基于Git实现在线代码托管的仓库有GitHub、Gitee等
GitHub是外国的,Gitee是中国的
两个都是一样的,但因为我没有梯子,去外网简直慢到爆炸,所以使用的Gitee
Gitee官网显示有这么多区别:
没用过,不是那后面的东西,不清楚,但官网都说了应该是这样的
要不是那么多开源项目都在GitHub,根本不想去GitHub,没梯子太卡了
Gitee标签
GitHub与Gitee基本类似,这里用Gitee
一个简单的仓库,下面来解释这些标签的作用
Code
代码:我们提交的东西都会在这显示
Issues
问题提出:对于我们放到仓库的项目,别人可以提出问题,找bug
一个问题讨论区
Pull Request
Pull Request:发起Pull Request给原仓库,让管理员看到我们修改的项目bug,当然,一般是要先fork原项目,修改后提交
新建Pull Request,因为我们的dev分支和master分支没有不同,自动提醒了,
我们在dev分支修改了一下
然后将源分支(我们修改的)改为dev,目标分支是master(我们希望修改的项目所在分支)
用dev分支新增一个c.txt,假装修改了一个bug,然后提供给项目管理员
这样就有了一个Pull Request
附件
上传一些文件,可以用附件
Wiki
如果REDAME.md还不够说明项目,可以使用Wiki文档详细的说明项目
统计
DevOps
DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合
这是关于产品敏捷开发,开发人员(Dev)+运维人员(Ops)
需要的话,可以网上搜索
服务
Gitee提供了一些额外服务
-
Gitee Pages:不得不说,NodeJS、VUE项目,放到Gitee Pages就可以运行网站,通过NodeJS、VUE搭建网站可以使用这个
-
JavaDoc 文档自动生成以及托管 (免费)
-
sonar 代码质量分析平台,可以对项目进行代码行数量/重复率统计、代码逻辑缺陷扫描(如空指针)、口令/密钥泄漏风险扫描、坏味道检测,并给出对应详细的报告与修复评估
-
等等,在官网可以查看码云:服务集成
管理
一些关于仓库、项目成员、公钥等的管理
watch\Star\fork
watch:眼睛图标标着Watch字样,点击这个按钮就可以Watch该仓库,今后该仓库的更新信息会显示在用户的公开活动
当你点了关注,就变成unwatch
Star旁边的数表示给这个仓库添加Star的人数,这个数越高,代表该仓库越受关注
当然,这个仓库得公开才可以Star
fork 就是被人copy的次数
介绍
在上面的标签下:第一行是仓库的介绍
可以在这里修改,也可以在管理界面修改仓库介绍
项目信息
- 提交:提交次数
- 分支:分支(master、dev)数
- 标签:为某个版本、某次提交打上某个发行版的标签
git tag -a <版本号> -m "<备注信息>"
- 发行版:由管理员管理,发行该项目,其他用户可以下载该发行版
那些开源项目都会有各种发行版,例如org.springframework.boot:spring-boot-starter-aop:1.5.7.RELEASE
这里的这个1.0发行版是我们创建标签时设置的1.0,设置标签会自动创建
例如我们创建一个发行版
- 贡献者:提交的人数
第三行项目信息
第一个是分支,可以切换,不同的分支是不一样的
后面的Pull Request、Issue就是上面的一行的同样的
文件标签可以上传文件,不够有文件数量限制
指的一提的Web IDE,类似与IDEA
克隆/下载:下载项目
总结
关于Git就到这了,这篇文章并没有讲太多Git的指令,而是解析Git的工作流程,GitHub的界面
关于Git的指令可以去Git官网看
值得一提的Git命令学习,是动画界面的,很好用
Git是很重要的项目管理工具,一定要学会