一 Git概述
# 开发中的一些问题
1. 协同工作场景下的代码同步
1). 独立开发 : 一个人开发一个项目
2). 协同开发 : 多个人一起开发一个项目
前端,后端,测试,DEA,运维...
2. 责任追溯
代码出bug了,谁的责任呢?
3. 代码记录
从版本1.0到2.0: 1.0版本做了一个功能,结果当时反响不好,删除了此功能,后续2.0想再加回来,怎么办?这就需要一个工具记录各个版本的代码
# 解决方案: 版本控制工具
1. 作用: 进行代码管理
1). 协同开发时,帮助合并代码
2). 记录每个人提交的代码
3). 记录每次提交的代码
2. 主流的版本控制工具
1). SVN : 集中式架构
一台服务器,多台客户端,所有的客户端都跟那台服务器交互 (飞q)
好处: 便于管理
坏处: 服务器压力很大
2). GIT : 分布式架构
每一台计算机即是服务端又是客户端(种子神器)
好处: 每个节点压力均摊
坏处: 管理不方便
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使用过程
1.3 Git工作流程
一般工作流程如下:
1.创建本地仓库(或者从远程仓库中克隆资源作为本地仓库)
2.从本地仓库中checkout代码然后进行代码修改(自动执行)
3.先将代码提交到暂存区(其实就是将自己写的代码添加到git管理的意思)
4.提交代码到本地仓库,本地仓库中保存修改的各个历史版本
5.在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库
- 从远程仓库拉取最新的源代码到工作区
二 Git的安装
2.1 软件下载
服务端下载地址:https://git-scm.com/download
其实只要服务端就够了(已经包含了客户端了,但是需要命令操作 bash)
客户端下载地址:https://tortoisegit.org/download/
可视化操作的客户端
今天的资料中也都有提供,推荐直接使用提供好的
2.2 Git服务器安装
双击启动安装程序,选择一个没有中文的目录,剩下的选项全部采用默认值,一路下一步,直到安装结束
(个人建议 无脑下一步-装C盘 , 都使用默认配置 不需要再改配置)
注意:安装的位置记录一下
2.3 Git客户端安装
① 启动安装程序
双击启动安装程序,选择一个没有中文的目录,剩下的选项全部采用默认值,一路下一步,直到安装结束
② 运行首次启动向导
③ 语言选择
Language选择English,点击下一步
④ 配置git.exe位置
再刚才安装git软件的时候,记录下了其安装位置, 我们需要在这里指定一下
⑤ 配置名称和邮箱
这些信息会在后期提交代码的时候,作为身份信息被提交到版本库
name写自己名字的拼音, 邮箱写自己的真实邮箱
⑥ 安装完成
⑦ 重启电脑
可以不用重启:
启动任务管理器,结束进程 explorer.exe 文件->新建任务->explorer.exe回车
安装完毕之后,一定要重新启动下电脑,然后在桌面上右键,看到下面的五个按钮,代表安装成功了
2.4 客户端汉化
① 安装汉化包
在资料中找到客户端的汉化包,双击运行,然后一路下一步完成汉化过程
② 中文语言配置
在桌面右键,按如下进行选择,即可完成中文语言配置
三 Git使用
3.1 Git本地仓库
创建本地仓库
创建文件,并执行添加操作
注意: 添加操作, 只是让git环境识别了我们新建的文件, 但是并没有将其放入到git仓库
提交文件到本地仓库
提交操作的作用是将文件放到本地仓库中进行管理
修改文件到本地仓库
查看文件历史版本
删除文件
删除文件需要做两件事
- 删除工作区文件
- 提交到本地仓库
忽略文件
在特定情况下,我们不希望自己的某些文件被git管理,这时候,我们就要设置git忽略掉此文件
3.2 Git远程仓库
现在我们已经在本地创建了一个Git仓库,但是这只能满足我们单人开发,如果想要团队协作,还需要一个远程仓库
目前比较流行的远程仓库,有下面这两个:
- github:https://github.com
- 码云 :https://gitee.com
准备工作
① 注册码云
② 创建仓库
③ 仓库连接协议
git仓库支持两种连接协议:
- HTTPS:是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性
- SSH:安全外壳协议,通过密钥对方式对传输的数据进行加密,实现免密登录
基于SSH协议的仓库操作
① 本地电脑生成秘钥对
使用cmd
命令启动dos窗口,然后输入ssh-keygen -t rsa
命令按回车键,然后一路回车(三次),生成秘钥对
如果提示ssh-keygen 不是内部或外部命令(请查看资料中的解决方案)
计算机用户名如果是中文,有可能会失败(推荐重装系统)
② 将公钥复制到gitee中
公钥默认生成在 C:\Users\用户名\ .ssh\ id_rsa.pub
③ 配置小乌龟开启ssh认证协议
https协议也一样
要在仓库中进行右单击
④ jack用户,本地推送
将代码push到远程仓库中
下一步直接OK
⑤ jerry用户,克隆仓库
3.3 代码冲突
模拟冲突
- 在
tom
文件夹,一个用户,创建一个文件,并执行commit—push操作,将文件推送到远程仓库 - 然后在
jerry
文件夹下,修改文件内容,并执行commit—push操作,将文件推送到远程仓库 - 然后在
tom
文件夹下,修改相同的内容,并执行commit—push操作,将文件推送到远程仓库 - 此时发现,推送的过程出现问题了,这就是文件冲突,下面就来解决文件冲突
冲突解决
- 后者(tom)用户,执行拉取操作
- 双方一起,编辑冲突(不要擅作主张)
- 提交(本地仓库)并推送(远程仓库)修改后的代码
- 常见于发生 修改pom , web.xml 各种配置文件
四 IDEA中使用Git【重点】
4.1 配置Git
这里是全局配置,已有的工作空间不会生效
C:\Program Files\Git\bin\git.exe (git安装路径\bin\git.exe)
旧的工作空间,需要再次进行局部配置
4.2 将工程交给Git管理
4.3 配置忽略文件
下载
ignore
插件并安装,成功后需要重启idea
(需要联网)
选择父工程,创建
.ignore
忽略文件
选择并添加:
java
和maven
二个忽略模板
(无需插件) 可以选择 File Types 忽略项目不需要提交的内容.需要手动添加
.idea
和*.iml
target
4.4 提交到本地仓库
4.5 创建gitee远程仓库
要求远程仓库名必须跟项目名一样
4.6 推送到远程仓库
观察gitee
4.7 从远程仓库克隆
在本地新建一个文件夹other,然后将代码克隆一份下来
没有特殊说明的步骤直接下一步或yes
记得手动加上模块名称,后续一直下一步
4.8 代码冲突
模拟冲突
1)在other文件夹中对pom.xml文件进行修改操作
2)通过小乌龟现将本地other文件夹的代码提交到远程仓库
3)在idea中也修改下pom.xml
4)再通过idea将idea中的代码推送到远程仓库,再推送的过程中,就会出现下面的错误(拉取远程仓库最新代码)
冲突解决
1)在idea中手动合并代码,解决掉冲突
2)将改好代码再次向远程仓库推送
五 Git分支管理【了解】
开发中一两年碰一次
5.1 介绍
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
5.2 创建分支
先打开版本控制的窗口
5.3 合并分支
代码合并分支需要二步:
- 回到master工作区
- 合并分支代码
分支合并到主干
六 私服GitLab【了解】
替代github和码云 , 网络的代码仓库有个问题
- 免费的需要开源
- 私有的需要收费
6.1 GitLab简介
在公司开发中如果代码不让暴露到外网时,可以在公司内部搭建一个只供公司内部使用的git公共服务器,这时我们可以使用GitLab,其使用与Gitee类似。其本质目的就是为了让程序在公司内部搭建git环境
6.2 参考资料
作业安排
- svn和git区别
- 安装git软件
- 服务器(仓库)
- 客户端(小乌龟),需要重启电脑,再安装汉化包
- git使用
- 本地仓库
- 创建仓库
- 在工作区,创建文件,添加到暂存区
- 提交到本地仓库
- 修改文件内容,更新到本地仓库
- 删除工作区文件,同步到本地仓库
- 查看日志版本信息
- 忽略指定文件
- 远程仓库
- 使用gitee码云,注册账号,创建仓库
- 通过ssh:安全外壳协议(制作密钥对,将公钥保存到码云,让小乌龟指定ssh通信)
- ssh将项目克隆,并推送到远程仓库
- 代码冲突(后提交的人就需要解决冲突),改别人的代码,第一件事先拉取最新的
- 本地仓库
- 在idea中操作git【重点】
- 配置git环境
- 学会忽略文件
.gitignore
- git分支
- 私服gitlab【了解】
- 创建用户组、用户、项目【架构师】
- 对于程序员(账号和远程仓库地址)
今天的最终目标:学会使用git,将自己的代码推送到远程仓库(学会忽略文件)