概述
Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等, )在软件开发过程中被广泛使用
Git的作用
- 代码回溯
- 版本切换
- 多人协作
- 远程备份
通过Git 仓库来存储和管理代码 文件,Git 仓库分为两种:
- 本地仓库: 开发人员自己电脑上的 Git 仓库
- 远程仓库: 远程服务器上的 Git 仓库
使用流程
commit: 提交, 将本地文件和版本信息保存到本地仓库
push: 推送, 将本地仓库文件和版本信息上传到远程仓库
pull: 拉取, 将远程仓库文件和版本信息下载到本地仓库
下载安装
- 下载地址: https://git-scm.com/download
- 下载完成后得到安装文件, 进行软件安装
安装完成后在任意目录点击鼠标右键,如果能看到如下菜单则表示安装完成
- Git GUlHere: 打开Git 图形界面
- Git Bash Here: 打开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作为分布式版本控制系统,同时提供商业计划和免费账户
码云
使用码云的操作流程如下
- 注册码云账号
- 登录码云
- 创建远程仓库
- 邀请其他用户成为仓库成员
常用命令
git全局设置
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。
- 在Git 命令行中执行下面命令:
- 设置用户信息
- git config --global user.name "itcast"
- git config --global user.email "hello@itcast.cn'
- 查看配置信息
- git config --list
- 上面设置的user.name和user.email并不是我们在注册码云账号时使用的用户名和邮箱,此处可以任意设置
获取git仓库
要使用Git对我们的代码进行版本控制,首先需要获得Git仓库,获取Git仓库通常有两种方式
方式1: 在本地初始化一个Git仓库(不常用)
- 在任意目录下创建一个空目录(例如repo1)作为我们的本地Git仓库
- 进入这个目录中,点击右键打开Git bash窗口
- 执行命令git init
- 如果在当前目录中看到.git文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功
方式2: 从远程仓库克隆(常用)
- 可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地
- 命令形式: git clone 【远程Git仓库地址】
基本概念
版本库: 前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
文件状态
Git工作区中的文件存在两种状态:
- untracked 未跟踪(未被纳入版本控制)
- tracked 已跟踪(被纳入版本控制)
- Unmodified 未修改状态
- Modified 已修改状态
- Staged 已暂存状态
- 注意:这些文件的状态会随着我们执行Git的命令发生变化
操作本地仓库
本地仓库的常用命令
查看文件状态: git status
将文件的修改加入暂存区: git add
将暂存区的文件取消暂存或者是切换到指定版本: git reset
将暂存区的文件修改提交到版本库: git commit
查看日志: git log
操作远程仓库
查看远程仓库: git remote
- 如果想查看已经配置的远程仓库服务器,可以运行 git remote 命令,它会列出每一个远程服务器的简写。
- 如果已经克隆了远程仓库,那么至少应该能看到 origin ,这是 Git 克隆的仓库服务器的默认名字。
- git remote -v 可以查看详细的远程服务器的信息, 包括简称和具体地址
添加远程仓库: git remote add
- 添加远程仓库: 运行 git remote add <shortname><url> 命令给当前Git文件添加一个远程 Git 仓库
- shortname 用来指定仓库的简写, url 用来指定仓库的地址
- 仓库的简写一般命名为 origin
从远程仓库克隆: git clone
- 如果你想获得一份已经存在了的 Git 远程仓库的拷贝,这时就要用到 git clone 命令。
- Git 克隆的是该 Git 仓库服务器上的几乎所有数据(包括日志信息、历史记录等),而不仅仅是复制工作所需要的文件。
- 克隆仓库的命令格式是: git clone [url]
推送到远程仓库: git push
- 将本地仓库内容推送到远程仓库,可以使用命令:git push [remote-name][branch-name]
- remote-name 用来指定远程仓库的简称, branch-name 用来指定推送到哪个分支
- 初次使用git push命令将本地文件推送至码云远程仓库时,需要进行身份认证,认证通过才可以推送
- 必须是项目的成员才可以向远程仓库中推送文件
从远程仓库拉取: git pull
- git pull 命令的作用是从远程仓库获取最新版本并合并到本地仓库
- 命令格式: git pull [short-name][branch-name]
- short-name是仓库简名 branch-name是仓库分支
- 如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories), 中文意为"拒绝合并不相关的历史", 因为本地仓库和远程仓库都有自己的文件历史, 所以拉取失败
- 解决此问题可以在个git pull命令后加入参数 --alow-unrelated-histories
- 意思是允许合并不相关的文件历史, 命令执行后会出现对话框, 先按下键盘 i 键进入插入模式, 随便输入一些说明信息, 然后按下键盘 esc 键退出插入模式, 然后输入 :wq 命令(保存文件)后按下回车键执行, 就可以了
分支操作
分支是Git 使用过程中非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线, 同一个仓库可以有多个分支,各个分支相互独立,互不干扰
通过git init 命令创建本地仓库时默认会创建一个master分支。
查看分支
- 列出所有本地分支: git branch
- 列出所有远程分支: git branch -r
- 列出所有本地分支和远程分支: git branch -a
- HEAD并不是分支 ,而是指针, 指向当前所在分支
创建分支
- 创建分支: git branch [name]
切换分支
- 切换分支: git checkout [name]
推送至远程仓库分支
- 推送至远程仓库分支: git push [shortName] [name]
- shortName是仓库简称, name是分支名称
合并分支
- 合并分支: git merge [name]
- 合并分支准确来说是把其他分支合并到当前分支
分支冲突: 当不同分支对同一个文件进行了操作, 合并分支时就会出现问题, 需要说动处理冲突文件
- 合并过程中提示文件出现了冲突
- .打开冲突文件, 手动处理出现冲突的文件
- 然后把处理完的文件保存到暂存区, 告诉Git冲突已经处理了
- 如果提交到远程仓库时报错, 可能是因为我们提交的文件并不完整, 只是提交了冲突的文件
- 所以在提交时添加一个 -i 参数就可以了, 表示忽略
标签操作
Git 中的标签,指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态,比较有代表性的是人们会使用这个功能来标记发布结点(v1.0、v1.2等)。下面是mybatis-plus的标签:
- 分支是动态概念, 分支里面的文件内容可以随时变动
- 标签是静态概念, 便签一旦生成, 所包含的文件内容就不会变了, 一般用来记录软件的版本
列出已有的标签: git tag
创建标签: git tag [name]
将标签推送至远程仓库: git push [shortName] [name]
- shortName表示仓库的简称, name表示标签的名称
检出标签: git checkout -b [branch] [name]
- 检出标签时需要新建一个分支来指向某个标签
- branch表示自动创建的分支的名字, name表示标签的名称
IDEA
在IDEA中配置Git
在IDEA中使用Git,本质上还是使用的本地安装的Git软件,所以需要在IDEA中配置Git。
- 点击Test显示Git版本, 证明路径选择正确
- 选择软件路径是要选中exe文件
获取Git仓库
在IDEA中使用Git获取仓库有两种方式: 本地初始化仓库, 从远程仓库克隆
Git忽略文件
有些文件不需要Git进行管理的, 就可以通过忽略文件指定不需要管理的文件
- 忽略文件可以自己创建, 也可以在创建远程仓库时自动生成
本地仓库操作
将文件加入暂存区
- 文件改变时点击add按钮加入暂存区
- 右键文件,通过Git菜单的命令进行添加
将暂存区的文件提交到版本库
- 通过右键文件或者文件夹, 使用Git菜单命令进行文件提交
- 通过快捷提交按钮进行文件提交
查看日志
远程仓库操作
查看远程仓库
添加和删除远程仓库
推送至远程仓库
- 通过右键项目名, 使用Git菜单推送代码
- 使用快捷按钮推送代码
从远程仓库拉取
- 通过项目右键菜品, 使用Git菜单的形式拉取代码
- 使用快捷按钮更新代码
分支操作
查看分支
- 通过菜单查看分支
- 通过IDEA右下角的快捷方式查看分支
创建分支
切换分支
将分支推送至远程仓库
合并分支