一、Git概述
1、公司开发是团队开发?个人开发?
- 团队开发
- 交换代码
- 项目开发
- 版本迭代
- mybatis 3.5.5
- 版本迭代
2、版本控制工具
- SVN:集中式版本控制工具【问题:单点故障】
- 有一台服务器,各个程序员把代码提交到服务器。
- 如果需要最新代码,则从服务器下载
- Git:分布式版本控制工具
- 有多个仓库【本地仓库,远程仓库】
- 避免单点故障
二、Git作用
- 软件开发
- 控制和管理软件的版本信息
- 谁做什么
- 什么时候做的
- 联系方式是什么
- 细化功能
- 代码回溯:Git在管理文件过程中会记录日志,方便回退到历史版本
- 版本切换:Git存在分支的概念,一个项目可以有多个分支(版本),可以任意切换
- 多人协作:Git支持多人协作,即一个团队共同开发一个项目,每个团队成员负责一部分代码,通过Git就可以管理和协调
- 远程备份:Git通过仓库管理文件,在Git中存在远程仓库,如果本地文件丢失还可以从远程仓库获取
三、下载与安装
1、下载
- https://git-scm.com/download
- 版本:Git-2.20.1-64-bit.exe
2、安装
- 闭着眼睛下一步【安装路径:纯英文】
- 安装成功的检查标准
桌面鼠标右击,能够看到如下两个菜单 |
---|
- 今天所有的命令都是基于
Git Bash Here
来完成的
3、初始化操作
- 只执行一遍
git config --global user.name "ghy"
git config --global user.email "[email protected]"
Git Bash Here |
---|
- 查看是否配置成功
git config --list
- git本地配置文件:
C:\Users\admin\.gitconfig
四、Git工作原理
工作原理 |
---|
- 远程仓库:远程服务器上的Git仓库
- 本地仓库:本地的Git仓库【仓库其实就是一个文件夹】
五、Git代码托管服务
1、常用的Git代码托管服务
Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?
我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
名称 | 网址 | 说明 |
---|---|---|
gitHub | https://github.com/ | 一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub |
码云 | https://gitee.com/ | 国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快 |
GitLab(搭建私服) | https://about.gitlab.com/ | 一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务 |
BitBucket | https://bitbucket.org/ | 一家源代码托管网站,采用Mercurial和Git作为分布式版本控制系统,同时提供商业计划和免费账户 |
2、注册码云账户
注册时,用户名不能是中文 |
---|
3、码云的基本操作
3.1 创建仓库
- 仓库名称不能是中文
创建仓库 |
---|
仓库地址 |
---|
3.2 分配开发人员
分配开发人员 |
---|
六、获取仓库
1、两种方式
1.1 从远程仓库克隆
git clone 远程仓库地址
从远程仓库克隆 |
---|
1.2 本地初始化仓库
git init
进入文件夹里面,打开 Git Bash Here |
---|
2、相关概念
- 本地版本库:.git目录就是本地版本库【严禁修改】
本地版本库 |
---|
- 工作区:跟.git文件夹所在同目录下的区域
工作区 |
---|
- 暂存区:是本地版本库中一个名为
index
的文件
暂存区 |
---|
七、本地操作
- git status 查看文件状态
- git add 将文件的修改加入暂存区 (掌握)
- git reset 将暂存区的文件取消暂存或者是切换到指定版本
- git commit 将暂存区的文件修改提交到版本库 (掌握)
- git log 查看日志 (掌握)
1、git status
- 查看文件状态
git status
- 文件的状态
Untracked files
:文件没有受到Git的管理
tracked
:文件受到Git的管理 1)Unmodified 未修改状态
2)Modified 已修改状态
3)Staged 已暂存状态
参数 -s:查看状态的简要信息
git status [-s] |
---|
2、git add
- 将文件加入暂存区
git add 文件名
git add *
*:是通配符,表示所有内容
3、git commit
- 将暂存区的文件提交到版本库
git commit -m '提交的日志信息必须精准'
git add 和 git commit |
---|
4、git log
- 查看日志
git log: 查看详细日志
git log --oneline : 查看简要日志
git log |
---|
git log --oneline |
---|
5、git reset【了解】
- 回退版本
git reset --hard 版本号
回退版本 |
---|
八、远程操作
1、git clone
- 克隆远程仓库到本地【在本地没有仓库时操作,一般只操作一次】
git clone 远程仓库地址
2、git remote
- 查看本地仓库关联的远程仓库
- 克隆下来的仓库自动会关联远程仓库
git remote : 表示只查看远程仓库的别名
git remote -v: 查看详细信息表示只查看远程仓库的别名
git remote [-v] |
---|
3、git remote add
- 关联远程仓库
- 克隆下来的仓库自动会关联远程仓库
git remote add 远程仓库别名 远程仓库地址
远程仓库别名一般叫origin,也可以叫别的名字
git remote add |
---|
4、git push
- 推送本地仓库到远程
git push 远程仓库别名 分支名
git push |
---|
5、git pull
- 拉取远程仓库到本地【只拉取不同的部分】
git pull 远程仓库别名 分支名
注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories )
解决此问题可以在git pull命令后加入参数
--allow-unrelated-histories
git pull |
---|
git pull origin master --allow-unrelated-histories |
---|
操作后,会弹出一个信息框,信息框是因为合并需要记录日志。
按
i
,进入插入模式,输入信息按
esc
,进入查看模式按
:wq
,表示保存并退出
九、分支操作
1、分支介绍
-
概念:分支是记录Git提交记录的时间线。分支之间是相互独立的,互不影响
-
作用:并行开发
- 譬如
- 张三开发
检查项模块
,就可以为其创建一个分支,它就负责开发检查项功能 - 李四开发
检查组模块
,就可以为其也创建一个分支,它就负责开发检查组功能 - 以此类推....
- 张三开发
当所有人都开发完成后,就可以把各个分支合并到一个主分支,主分支上面就具备了所有的模块功能。
- 譬如
-
默认情况下,本地仓库一旦初始化且有了提交记录后,就会自动创建一个名为
master
的分支,叫做主分支,实际上就是一个普通分支
分支原理 |
---|
2、git branch
- 查看分支
git branch : 查看本地仓库分支
git branch -r : 查看远程仓库分支
git branch -a : 查看所有分支
git branch |
---|
3、git branch 分支名
- 创建分支
git branch 分支名 |
---|
4、git checkout 分支名
- 切换分支
git checkout 分支名 |
---|
5、git merge 分支名
-
合并分支
注意:合并分支时,需要在合并分支方去操作
- 譬如:A分支合并B分支,那么需要在A分支去执行合并分支命名
master分支合并张三分支 |
---|
5.1 冲突问题
- 冲突的产生
- 当合并分支时,在同一个文件的同一个位置发现内容不一样时,就会产生冲突
冲突的产生 |
---|
- 解决冲突
- 必须手动编辑冲突的文件 --> 添加暂存区 --> 提交到本地【提交日志比较特殊】
解决冲突 |
---|
十、标签操作
- 标签:一般指的是项目开发过程中,出现了里程碑意义的版本
1、git tag
- 查看标签
git tag |
---|
2、git tag 标签名
- 创建标签
git tag 标签名 |
---|
3、git push 远程仓库别名 标签名
- 将标签推送至远程仓库
- 只有推送本地仓库到远程后,才能看到标签
git push 远程仓库别名 标签名 |
---|
4、git checkout -b 分支名 标签名
- 检出指定分支的标签
git checkout -b 分支名 标签名 |
---|
十一、IDEA使用Git
- 注意:底层还是使用git命令完成的。所以必须在外部安装好Git
1、IDEA集成Git
- 默认情况下,会自动集成
IDEA集成Git |
---|
2、获取Git仓库
2.1 本地初始化
- 创建一个Maven项目
- 创建一个
.gitignore
文件,忽略不想要提交的文件【该操作一定要在git add
之前】- 初始化仓库
- 克隆远程仓库【一般情况下,
远程仓库名称
跟本地仓库名称
保持一致】
使用插件自成生成.gitignore 文件 |
---|
初始化仓库 |
---|
忽略文件的解释
- 在真实开发中,因为每个人的开发环境都不相同,所以为了避免产生不必要的冲突。一般会把一些内容忽略掉,不提交到本地仓库
- 譬如:项目中idea目录,xxx.iml文件,target目录等
- 指定忽略内容是由一个名为
.gitignore
文件来完成的,在该文件中可以指定要忽略的内容
可以使用idea插件,自动生成该文件 |
---|
2.2 克隆远程仓库到本地
克隆远程仓库到本地 |
---|
3、本地操作
3.1 增加到暂存区
增加到暂存区 |
---|
3.2 提交到本地仓库
提交到本地仓库 |
---|
查看日志 |
---|
4、远程操作
4.1 关联远程仓库
4.2 推送到远程仓库
推送到远程仓库 |
---|
4.3 拉取远程仓库代码本地
拉取远程仓库代码本地 |
---|
5、分支操作
查看分支 |
---|
创建分支 |
---|
推送本地分支到远程 |
---|
远程仓库的分支 |
---|
切换分支 |
---|
合并分支 |
---|
合并时产生的冲突 |
---|