02-Git

一、Git

先入为主: Git 其实就是个版本控制工具,多人协作工具等,一般用于公司的开发和文档的编写。
        1、可以进行多人协作开发(写作)
        2、可以有历史记录,随时回退到任意时刻。


1、Git的介绍

Git的创始人是Linus Torvalds, 也是Linux的创始人。
行业内比较有名的版本控制工具: 
CVS(老了)
SVN(还行,在git之前很火)
Git(刚开始只有Linux)
我还用过StarTeam(收费的)

总结:目前市场上使用的是SVN和Git

image.png


SVN是集中式版本控制系统,版本库是集中放在中央服务器的。

局域网的一个电脑而

image.png


Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

image.png

大白话来讲:
    你如果使用Git ,你的本地就会有一个本地库,代码可以提交到本地库里面。比如 Hello.py 提交到本地库,过了两天又提交了Hello.py 到本地库,Git 如果自己使用是完全可以的,不需要中央服务器。
    如果使用的是SVN,你写了一个Hello.py 要提交到中央服务中,因为本地没有本地库。所以没办法工作。

2、Git的安装

1) 安装的Git

下载链接:Git - Downloads

下一步下一步安装即可!

安装完之后起始就可以使用了,只是必须使用 命令才能完。

不想学命令,可以直接跳过。可以使用图形化界面。

2) 安装小乌龟 TortoiseGit

 Tortoise --乌龟的意思,寓意公司千年企业。
这个企业以前做了一个软件:TortoiseSVN

先安装软件:

再安装汉化包:

原因是可以在安装小乌龟的时候,选择语言为中文,要不然就是随后再设置:

语言包安装完毕之后,刷新一下,就出现简体中文了。

配置开发者姓名及邮箱,每次提交代码时都会把此信息包含到提交的信息中。

此处写上自己的名字的全拼,邮箱写一个自己经常使用的邮箱。

使用默认配置,点击“完成”按钮完成配置。

完整完毕后在系统右键菜单中会出现git的菜单项。

1)Git 是官网给的,必须安装
2)小乌龟是第三方公司开发的,是为了方便使用才安装的,可以不安装

语言包安装完毕后可以在TortoiseGit的设置中调整语言 

忘记设置用户名和邮箱了:

3、Git的使用场景 

        1、除了开发人员,公司中的其他非开发同事也是可以使用的,比如项目经理。
        2、在公司中大部分人是使用Git管理代码的

4、使用git管理文件版本

需求:

假如你自己想使用Git 作为版本控制工具,比如你在写书。

为了防止本地的丢失,误删,或者是为了回看之前的版本,都可以使用Git。

1)创建版本库

第一种是使用Git原生的命令:

在需要进行版本控制的文件夹中,右键,选择 Git Bash Here

repository 是仓库的意思,本地已经帮你创建了一个本地库

        什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。由于git是分布式版本管理工具,所以git在不需要联网的情况下也具有完整的版本管理能力。

第二种是使用小乌龟操作:

确认

2)添加文件 

如果是一个新的文件,选中这个文件,然后右键点击 “添加按钮”,这个文件会进入暂存区。

暂存区的内容 再次提交,会进入到本地库中。

 

说一下原理: 

3) 修改文件

打开文件,修改内容,修改完之后,直接提交即可,没有“添加”功能。

4)查看历史

可以在文件上点击右键选择“显示日志”来查看文件的修改历史。

 

5) 比较版本的差异

比较这个版本和上一个版本的差异:

也可以通过查看日志,选择两个想要比较的版本,进行差异比较: 

6) 还原

当文件修改后不想把修改的内容提交,还想还原到未修改之前的状态。此时可以使用“还原”功能。

7)可以回退到某个版本 

 查看历史,选中某个版本,回退回去

 

 

         Git 可以 将本地的文件上传到本地库,还可以比较两个不同版本的区别,回退到某个历史版本,还可以还原本地的文件等。

5 使用 Git 管理代码

1、进入到项目所在的文件夹中,右键 创建本地库

2、选中需要提交的代码文件即可。

6、远程仓库

maven也有,但是git也有,他们两个没什么关系。

两种方式都可以当做远程仓库:

1) 第三方的网站

GitHub (全球的) : 这个网站涵盖了全球顶级的开源项目

GitHub: Let’s build from here · GitHub

另一个是码云: Gitee - 企业级 DevOps 研发效能平台

1.1.1 github上创建仓库

首先你得在github上创建一个账号,这个就不演示了。然后在github上创建一个仓库

git@github.com:erjinzhi/myLaoBaby.git 

这个地址是使用的SSH协议,该协议是一种非常安全的协议,要想使用该协议连接远程仓库,需要先生成公钥和私钥。

在windows下我们可以使用 Git Bash.exe来生成密钥,可以通过开始菜单或者右键菜单打开Git Bash

ssh-keygen -t rsa

至此,你就在本地生成了一个公钥和私钥。

执行命令完成后,在window本地用户.ssh目录C:\Users\用户名\.ssh下面生成如下名称的公钥和私钥:

带有pub 字样的是公钥!!!

将公钥的字符串,配置在Github上:

此时,本地和远程仓库之间,已经产生了某种联系。

接着配置小乌龟中的远程地址:

假如没有发现远端这个操作,可以直接提交代码,将其逼出来。

接着见证奇迹的时刻到了:

在文件夹中,右键,选择 “推送”,上传至远程仓库!!!

思考:为什么没有让你输入你的账号和密码? 因为配置了公钥,使用的是SSH协议。已经验证过了。

假如你弹出这个界面,说明ssh并没有起作用,检查是否协议选择错误!

Gitee (码云) : 国内做的非常不错的网站,也是有很多的开源项目 (开源中国)

Gitee - 企业级 DevOps 研发效能平台

git@gitee.com:yanzhenwei/my-lao-baby.git

接着在你的码云上,创建一个SSH的Key:

右键 --> 推送

如何将远程的项目clone 到本地:

先知道地址:  git@gitee.com:yanzhenwei/ZhunDemo.git

git clone git@gitee.com:yanzhenwei/ZhunDemo.git 

 

2)公司自己搭建的服务器 GitLab

有些公司:不想使用第三方的平台,自己搭建一个类似于GitHub的平台。

比如大数据团队多人协作,使用的就是自己搭建的。

7、git在IDE工具中的使用

        IDE工具:开发工具  IDEA、Eclipse、NetBeans

以下这个图想要说明的是为什么有了IDE工具还要小乌龟。

为什么要讲这个章节呢?

1.1 在Idea中配置git

生成token的办法:

idea-使用idea的github添加账号连接github报错 - 知乎

新版本会弹出页面让其授权。

1.2 在IDE工具中配置gitee的支持

gitee账户得先注册一个。

第一步:安装插件 idea 默认是不支持gitee的,支持github.

第二步:添加gitee账户

跳转界面(新版本有弹出界面),进行授权:

成功登陆:

1.3 使用场景

第一个使用场景:我想把本地的项目上传到gitee上

问自己:本地的项目,你使用git管理了吗?

 

成功

我就把远程不存在的项目,给上传上去了,不需要事先把仓库建好! 

一般这个操作都是公司的技术总监,架构师,项目经理将自己本地的项目上传。

第二个使用场景:我想把gitee上的项目全部给拉下来(clone)-- 小兵

下载自己的远程仓库的项目: 

下载别人的项目: 

 

git@gitee.com:yanzhenwei/HbaseDemo2.git

 

点击clone 即可。 

第三个使用场景:使用IDE工具把代码给管理起来

先创建一个TestWork.py ,立马提示:是否通过git管理:

 

 提交到:本地库

接着开始文件,推送到远程仓库! 

第四个使用场景:我想给团队一起协作

如何下载团队的其他人的最新的代码呢?

假如你写的代码被别人给修改了,这个时候你也改了?冲突了!

此时如果你修改了代码,推送就会报错:

点击合并后,赶紧上传吧,别得瑟了。

如何进行团队开发:

        1、git 是什么?
              是一个小工具,有一个安装包
        2、小乌龟是什么?
              git的图形化操作工具,便于我们操作git,如果没有他,只能使用命令了。
        3、idea 跟git什么关系?
             idea 集成了git,所以如果你只是写代码的小兵,其他的用不上,直接使用ide工具即可,不需要下载小乌龟。
        现在主流的IDE工具都支持git。
        4、github、gitee 是什么?
              git的远程仓库,可以远程保存代码,便于团队协作。
        5、gitLab 是什么?
              开源的,可以自己搭建的git服务器的软件而已。 

8、分支

image.png

1)使用小乌龟操作分支

里面写上一些文件,比如11111111,提交到本地库,实际上提交到master分支。

创建新的分支:

在a.txt 中添加了些文字,此时提交的话,是提交的到分支这个里面,主分支并没有发生变化。

 

如何切换到主分支呢?

在主分支,修改一些文字,提交,相当于是主分支添加了一些文字,从分支也添加了一些文字。

两个分支合并。

 有可能会出现冲突的问题,手动解决,再次提交即可。

2)使用idea工具操作分支

在代码的右下角,可以看到分支目前是在哪个分支中。

填写分支的名字:

接着合并:先切换到主分支,然后合并

合并:

删除分支:

课后练习:

CREATE TABLE emp(
	empno	INT,
	ename	VARCHAR(50),
	job		VARCHAR(50),
	mgr		INT,
	hiredate	DATE,
	sal		DECIMAL(7,2),
	comm	decimal(7,2),
	deptno	INT
);
INSERT INTO emp values(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp values(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO emp values(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO emp values(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO emp values(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO emp values(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO emp values(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO emp values(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO emp values(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp values(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO emp values(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp values(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO emp values(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO emp values(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);

CREATE TABLE dept(
	deptno		INT,
	dname		varchar(14),
	loc			varchar(13)
);
INSERT INTO dept values(10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept values(20, 'RESEARCH', 'DALLAS');
INSERT INTO dept values(30, 'SALES', 'CHICAGO');
INSERT INTO dept values(40, 'OPERATIONS', 'BOSTON');

select * from emp;
select * from dept;
-- 以上是数据导入

-- 1、⼯资⾼于JONES的员⼯
select sal from emp where ename ='JONES';
select * from emp where sal> (select sal from emp where ename ='JONES');

-- 2、查询与SCOTT同⼀个部⻔的员⼯
select * from emp where deptno = (select deptno from emp where ename='SCOTT') and ename !='SCOTT';

-- 3、⼯资⾼于30号部⻔所有⼈的员⼯信息
-- 30号部门的最高工资是多少?
select max(sal) from emp where deptno=30;
select * from emp where sal > (select max(sal) from emp where deptno=30);

-- 4、查询⼯资⼤于10号部⻔的平均⼯资的⾮10号部⻔的员⼯信息
select avg(sal) from emp where deptno=10;
select * from emp where sal > (select avg(sal) from emp where deptno=10) and deptno != 10;
-- 5、查询与7369同部⻔的同事信息
select * from emp where deptno = (select deptno from emp where empno=7369) and empno !=7369;

-- 6、查询员⼯的姓名,⼯资,及其部⻔的平均⼯资
select deptno,avg(sal) from emp group by deptno;
-- 第一种写法
select ename,sal,avgSal  from emp ,(select deptno,avg(sal) avgSal from emp group by deptno) a1
  where emp.deptno = a1.deptno;
-- 第二种写法
select ename,sal,`avg(sal)`  from emp ,(select deptno,avg(sal) from emp group by deptno) a1
  where emp.deptno = a1.deptno;
-- 第三种写法
select ename,sal,(select avg(sal) from emp e2 where e2.deptno=e1.deptno) as avgSal  from emp e1;
-- 解释工作
select ename,sal,e1.deptno,(select avg(sal) from emp e2 where e2.deptno=10) as avgSal  from emp e1;
select ename,sal,e1.deptno,(select avg(sal) from emp e2 where e2.deptno=e1.deptno) as avgSal  from emp e1;

-- 7、查询每个员⼯的信息及其部⻔的平均⼯资,⼯资之和,部⻔⼈数
select *,
       (select avg(sal) from emp e2 where e2.deptno=e1.deptno) as avgSal,
       (select sum(sal) from emp e2 where e2.deptno=e1.deptno) as sumSal,
       (select count(1) from emp e2 where e2.deptno=e1.deptno) as countNum
       from emp e1;
-- 8、查询平均⼯资⼤于30号部⻔的平均⼯资的部⻔号,和平均⼯资
 select avg(sal) from emp where deptno=30;
 -- sql中,having 以及 order by 等可以使用别名,where后面不能使用别名
  select deptno,avg(sal) avgSal from emp group by deptno having avgSal > (select avg(sal) from emp where deptno=30);
-- 9、查询所有员工信息以及工资总和
   select *,(select sum(sal) from emp) sumSal from emp;
-- 10、查询所有员工人数不少于3人的部门信息
select deptno,count(1) from emp group by deptno;
-- 分组sql语句中,select 后面只能跟 分组字段和聚合函数
-- 解释,有意的写法
select deptno,count(1) from emp group by  deptno having count(1) >=3;
-- 没有意义的写法
select deptno,count(1),ename,job from emp group by  deptno having count(1) >=3;
-- 正确的写法:
select deptno,count(1) from emp group by  deptno having count(1) >=3;
select dept.* from dept,(select deptno,count(1) from emp group by  deptno having count(1) >=3) d
      where dept.deptno=d.deptno;
-- 11、查询员工编号,姓名,部门编号,工资,本部门工资总和
 select empno,ename,deptno,sal,(select sum(sal) from emp e1 where e1.deptno=e2.deptno) as 部门总工资 from emp e2;
-- 12、查询每个员工的姓名和上级领导的姓名
select ename,(select ename from emp e2 where e1.mgr = e2.empno) as 领导的名字  from emp e1;
-- 13、查询没有员工的部门 (exists用法)
select * from dept where not exists (select 1 from emp where emp.deptno=dept.deptno);
-- 不使用exists
select * from dept where deptno not in (select distinct deptno from emp );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuPangZa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值