一 Git概述

  1. # 开发中的一些问题
  2. 1. 协同工作场景下的代码同步
  3. 1). 独立开发 : 一个人开发一个项目
  4. 2). 协同开发 : 多个人一起开发一个项目
  5. 前端,后端,测试,DEA,运维...
  6. 2. 责任追溯
  7. 代码出bug了,谁的责任呢?
  8. 3. 代码记录
  9. 从版本1.02.0: 1.0版本做了一个功能,结果当时反响不好,删除了此功能,后续2.0想再加回来,怎么办?这就需要一个工具记录各个版本的代码
  10. # 解决方案: 版本控制工具
  11. 1. 作用: 进行代码管理
  12. 1). 协同开发时,帮助合并代码
  13. 2). 记录每个人提交的代码
  14. 3). 记录每次提交的代码
  15. 2. 主流的版本控制工具
  16. 1). SVN : 集中式架构
  17. 一台服务器,多台客户端,所有的客户端都跟那台服务器交互 (飞q)
  18. 好处: 便于管理
  19. 坏处: 服务器压力很大
  20. 2). GIT : 分布式架构
  21. 每一台计算机即是服务端又是客户端(种子神器)
  22. 好处: 每个节点压力均摊
  23. 坏处: 管理不方便

1.1 Git历史

  • Linus在1991年创建了开源的Linux,从此,世界各地的优秀程序员都在为linux的源代码开始奉献自己的一份力量
  • 2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码,效率非常差
  • 2002年,BitMover公司决定将自己的商业版本控制系统BitKeeper让Linus团队免费使用,以维护Linux的源代码
  • 2005年,Linus团队的一个小伙试图破解BitKeeper的协议,被发现了,于是BitMover公司怒了,收回了Linux社区的免费使用权
  • 接下来,Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!
  • 2008年,基于的Git的GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub
  • 现在,Git已经成为最流行的分布式版本控制系统

1.2 git使用过程

image-20210517085050893.png

1.3 Git工作流程

image-20210109090637555.png
一般工作流程如下:

1.创建本地仓库(或者从远程仓库中克隆资源作为本地仓库)

2.从本地仓库中checkout代码然后进行代码修改(自动执行)

3.先将代码提交到暂存区(其实就是将自己写的代码添加到git管理的意思)

4.提交代码到本地仓库,本地仓库中保存修改的各个历史版本

5.在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库

  1. 从远程仓库拉取最新的源代码到工作区

二 Git的安装

2.1 软件下载

服务端下载地址:https://git-scm.com/download

其实只要服务端就够了(已经包含了客户端了,但是需要命令操作 bash)

客户端下载地址:https://tortoisegit.org/download/

可视化操作的客户端

今天的资料中也都有提供,推荐直接使用提供好的

image-20201123222657191.png

2.2 Git服务器安装

双击启动安装程序,选择一个没有中文的目录,剩下的选项全部采用默认值,一路下一步,直到安装结束

(个人建议 无脑下一步-装C盘 , 都使用默认配置 不需要再改配置)

注意:安装的位置记录一下

image-20200717155019636.png

2.3 Git客户端安装

① 启动安装程序

双击启动安装程序,选择一个没有中文的目录,剩下的选项全部采用默认值,一路下一步,直到安装结束

image-20200717155536087.png

② 运行首次启动向导

image-20200717155652923.png

③ 语言选择

Language选择English,点击下一步

image-20200717155952630.png

④ 配置git.exe位置

再刚才安装git软件的时候,记录下了其安装位置, 我们需要在这里指定一下

image-20200717160349865.png

⑤ 配置名称和邮箱

这些信息会在后期提交代码的时候,作为身份信息被提交到版本库

name写自己名字的拼音, 邮箱写自己的真实邮箱

image-20200717160434881.png

⑥ 安装完成

image-20200717161020931.png

⑦ 重启电脑

可以不用重启:

启动任务管理器,结束进程 explorer.exe

文件->新建任务->explorer.exe回车

安装完毕之后,一定要重新启动下电脑,然后在桌面上右键,看到下面的五个按钮,代表安装成功了

image-20200717161259603.png

2.4 客户端汉化

① 安装汉化包

在资料中找到客户端的汉化包,双击运行,然后一路下一步完成汉化过程

image-20200717161548368.png

② 中文语言配置

在桌面右键,按如下进行选择,即可完成中文语言配置

image-20200717161828922.png

三 Git使用

3.1 Git本地仓库

创建本地仓库

image-20200717164905847.png

创建文件,并执行添加操作

注意: 添加操作, 只是让git环境识别了我们新建的文件, 但是并没有将其放入到git仓库

image-20200717201147718.png

提交文件到本地仓库

提交操作的作用是将文件放到本地仓库中进行管理

image-20200717202436106.png

修改文件到本地仓库

image-20201125224049612.png

查看文件历史版本

image-20200717203200332.png

删除文件

删除文件需要做两件事

  1. 删除工作区文件
  2. 提交到本地仓库

image-20200717204313603.png

忽略文件

在特定情况下,我们不希望自己的某些文件被git管理,这时候,我们就要设置git忽略掉此文件

image-20201126092554379.png

image-20210317091743211.png

3.2 Git远程仓库

现在我们已经在本地创建了一个Git仓库,但是这只能满足我们单人开发,如果想要团队协作,还需要一个远程仓库

目前比较流行的远程仓库,有下面这两个:

准备工作

① 注册码云

image-20200719083258106.png

② 创建仓库

image-20210516163607043.png

③ 仓库连接协议

image-20210109095528203.png

git仓库支持两种连接协议:

  • HTTPS:是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性
  • SSH:安全外壳协议,通过密钥对方式对传输的数据进行加密,实现免密登录

image-20200719091754184.png

基于SSH协议的仓库操作

① 本地电脑生成秘钥对

使用cmd命令启动dos窗口,然后输入ssh-keygen -t rsa命令按回车键,然后一路回车(三次),生成秘钥对

如果提示ssh-keygen 不是内部或外部命令(请查看资料中的解决方案)

计算机用户名如果是中文,有可能会失败(推荐重装系统)

image-20201126095329352.png

② 将公钥复制到gitee中

公钥默认生成在 C:\Users\用户名\ .ssh\ id_rsa.pub

image-20201126095459568.png

③ 配置小乌龟开启ssh认证协议

https协议也一样

要在仓库中进行右单击
1626097347847.png

image-20210317094722230.png

image-20200719094642199.png


④ jack用户,本地推送

将代码push到远程仓库中

1626098116973.png

下一步直接OK

⑤ jerry用户,克隆仓库

image-20210517100455754.pngimage-20210109101440491.png

3.3 代码冲突

模拟冲突

  1. tom文件夹,一个用户,创建一个文件,并执行commit—push操作,将文件推送到远程仓库
  2. 然后在jerry文件夹下,修改文件内容,并执行commit—push操作,将文件推送到远程仓库
  3. 然后在tom文件夹下,修改相同的内容,并执行commit—push操作,将文件推送到远程仓库
  4. 此时发现,推送的过程出现问题了,这就是文件冲突,下面就来解决文件冲突
    image-20210109101921469.png

冲突解决

  1. 后者(tom)用户,执行拉取操作
  2. 双方一起,编辑冲突(不要擅作主张)
    image-20210109102056312.png
    image-20210109102326561.png
  3. 提交(本地仓库)并推送(远程仓库)修改后的代码
  4. 常见于发生 修改pom , web.xml 各种配置文件

四 IDEA中使用Git【重点】

4.1 配置Git

这里是全局配置,已有的工作空间不会生效

C:\Program Files\Git\bin\git.exe (git安装路径\bin\git.exe)

image-20201125230851592.png

旧的工作空间,需要再次进行局部配置

image-20210109104327335.png

4.2 将工程交给Git管理

image-20210109104515587.png

4.3 配置忽略文件

下载ignore插件并安装,成功后需要重启idea (需要联网)

image-20201126101705031.png

选择父工程,创建.ignore忽略文件

image-20210517103530424.png

选择并添加:javamaven二个忽略模板

image-20210517103601940.png

(无需插件) 可以选择 File Types 忽略项目不需要提交的内容.需要手动添加.idea*.iml target

image-20210517103458886.png

4.4 提交到本地仓库

image-20210517103715944.png

4.5 创建gitee远程仓库

要求远程仓库名必须跟项目名一样

image-20210109110113444.png

image-20210109110157014.png

4.6 推送到远程仓库

image-20210109110422818.png

1626159716574.png

观察gitee

image-20210109110508596.png

4.7 从远程仓库克隆

在本地新建一个文件夹other,然后将代码克隆一份下来

没有特殊说明的步骤直接下一步或yes

image-20210109110817952.png

1626103963297.png

记得手动加上模块名称,后续一直下一步

1626160196270.png

4.8 代码冲突

模拟冲突

1)在other文件夹中对pom.xml文件进行修改操作

2)通过小乌龟现将本地other文件夹的代码提交到远程仓库

3)在idea中也修改下pom.xml

4)再通过idea将idea中的代码推送到远程仓库,再推送的过程中,就会出现下面的错误(拉取远程仓库最新代码)

image-20210109111414452.png

冲突解决

1)在idea中手动合并代码,解决掉冲突

image-20210109111439435.png
image-20210109111608746.png
2)将改好代码再次向远程仓库推送

五 Git分支管理【了解】

开发中一两年碰一次

5.1 介绍

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
image-20210517144647040.png

5.2 创建分支

先打开版本控制的窗口

image-20210517144823589.png

image-20210109113948898.png

5.3 合并分支

代码合并分支需要二步:

  1. 回到master工作区
    image-20210109114328740.png
  2. 合并分支代码
    image-20210109114526351.png

分支合并到主干

2520403d-8a69-404f-b784-348d93a2f696.png

六 私服image-20210517145616555.pngGitLab【了解】

替代github和码云 , 网络的代码仓库有个问题

  1. 免费的需要开源
  2. 私有的需要收费

6.1 GitLab简介

在公司开发中如果代码不让暴露到外网时,可以在公司内部搭建一个只供公司内部使用的git公共服务器,这时我们可以使用GitLab,其使用与Gitee类似。其本质目的就是为了让程序在公司内部搭建git环境

6.2 参考资料

image-20210516162628062.png

image-20210516162634691.png

作业安排

  • svn和git区别
  • 安装git软件
    • 服务器(仓库)
    • 客户端(小乌龟),需要重启电脑,再安装汉化包
  • git使用
    • 本地仓库
      • 创建仓库
      • 在工作区,创建文件,添加到暂存区
      • 提交到本地仓库
      • 修改文件内容,更新到本地仓库
      • 删除工作区文件,同步到本地仓库
      • 查看日志版本信息
      • 忽略指定文件
    • 远程仓库
      • 使用gitee码云,注册账号,创建仓库
      • 通过ssh:安全外壳协议(制作密钥对,将公钥保存到码云,让小乌龟指定ssh通信)
      • ssh将项目克隆,并推送到远程仓库
      • 代码冲突(后提交的人就需要解决冲突),改别人的代码,第一件事先拉取最新的
  • 在idea中操作git【重点】
    • 配置git环境
    • 学会忽略文件 .gitignore
  • git分支
  • 私服gitlab【了解】
    • 创建用户组、用户、项目【架构师】
    • 对于程序员(账号和远程仓库地址)

今天的最终目标:学会使用git,将自己的代码推送到远程仓库(学会忽略文件)