目录
1. 前言
1.1 概念
Git 是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。通过Git 仓库来存储和管理这些文件,Git 仓库分为两种:
-
本地仓库:开发人员自己电脑上的 Git 仓库
-
远程仓库:远程服务器上的 Git 仓库
-
commit:提交,将本地文件和版本信息保存到本地仓库
-
push:推送,将本地仓库文件和版本信息上传到远程仓库
-
pull:拉取,将远程仓库文件和版本信息下载到本地仓库
1.2 作用
-
代码回溯:Git在管理文件过程中会记录日志,方便回退到历史版本
-
版本切换:Git存在分支的概念,一个项目可以有多个分支(版本),可以任意切换
-
多人协作:Git支持多人协作,即一个团队共同开发一个项目,每个团队成员负责一部分代码,通过Git就可以管理和协调
-
远程备份:Git通过仓库管理文件,在Git中存在远程仓库,如果本地文件丢失还可以从远程仓库获取
1.3 Git相关的一些概念
版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
1.4 Git工作区中文件的两种状态
-
untracked 未跟踪(未被纳入版本控制)
-
tracked 已跟踪(被纳入版本控制)
1)Unmodified 未修改状态
2)Modified 已修改状态
3)Staged 已暂存状态
注意:文件的状态会随着我们执行Git的命令发生变化
1.5 常用的Git代码托管服务
Git中存在两种类型的仓库,即本地仓库和远程仓库。我们可以借助互联网上提供的一些代码托管服务来搭建Git远程仓库,其中比较常用的有GitHub、码云、GitLab等。
名称 | 网址 | 说明 |
---|---|---|
gitHub | GitHub | 面向开源及私有软件项目的托管平台,只支持Git 作为唯一的版本库格式进行托管 |
码云 | Gitee | 国内的代码托管平台,由于服务器在国内,所以比GitHub速度更快 |
GitLab | GitLab | 用于仓库管理系统的开源项目,使用Git作为代码管理工具 |
BitBucket | Bitbucket | 采用Mercurial和Git作为分布式版本控制系统,提供商业和免费版本 |
2. 下载与安装
2.1 Git下载与安装
官网下载完成后得到安装文件:
直接双击安装,安装完成后,在任意目录下右击鼠标,能够看到如下菜单则说明安装成功:
Git安装目录结构如下:
2.2 码云代码托管服务
码云网址:Gitee - 基于 Git 的代码托管和研发协作平台
使用码云的操作流程如下:
-
注册码云账号
-
登录码云
-
创建远程仓库
解释说明:
仓库名称:必填,每个仓库都需要有一个名称,同一个码云账号下的仓库名称不能重复
路径:访问远程仓库时会使用到,一般无需手动指定,和仓库名称自动保持一致
开源:所有人都可以查看此仓库
私有:只有此仓库的成员可见,其他人不可见
-
邀请其他用户成为仓库成员
3.使用及常用命令
3.1 Git常用命令
3.1.1 Git全局设置
当安装Git后首先要设置用户名称和email地址。每次Git提交都会使用该用户信息。注意设置的user.name和user.email并不是我们在注册码云账号时使用的用户名和邮箱,可以任意设置。
设置用户信息
git config --global user.name "gitnld"
git config --global user.email "nld1123@163.com"
查看配置信息
git config --list
3.1.2 获取Git仓库
要使用Git对我们的代码进行管理,首先需要获得Git仓库。获取Git仓库通常有两种方式:第一种是在本地初始化Git仓库(不常用),第二种是从远程仓库克隆(常用)
本地初始化Git仓库
-
在任意目录下创建一个空目录(例如repo1)作为我们的本地Git仓库
-
进入这个目录中,点击右键打开Git bash窗口
-
执行命令,在当前目录中看到.git隐藏文件夹,则说明Git仓库创建成功
git init
从远程仓库克隆
可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地
git clone 远程仓库地址
3.1.3 本地仓库操作
-
查看文件状态:由于工作区中文件状态的不同,执行 git status 命令后的输出也会不同
git status
-
文件修改加入暂存区:加入暂存区后再执行 git status 命令,可发现文件状态已发生变化
git add fileName
-
暂存区文件取消暂存或切换到指定版本:每次提交会产生新版本号,通过版本号可回到旧版本
#取消暂存
git reset 文件名
#切换到指定版本
git reset --hard 版本号
-
将暂存区的文件修改提交到版本库
git commit -m msg 文件名
-m:代表message,每次提交时需要设置,会记录到日志中,可以使用通配符*一次提交多个文件
-
查看日志:查看日志可以发现每次提交都会产生一个版本号,提交时设置的message、提交人、邮箱、提交时间等信息都会记录到日志中
git log
3.1.4 远程仓库操作
-
查看远程仓库:可以通过-v参数查看远程仓库更加详细的信息,本地仓库配置的远程仓库都需要一个简称,后续在和远程仓库交互时会使用到这个简称
git remote
-
添加远程仓库:一个本地仓库可以关联多个远程仓库
git remote add 简称 远程仓库地址
-
从远程仓库克隆: Git 克隆的是该 Git 仓库服务器上的几乎所有数据
git clone 远程仓库地址
-
从远程仓库拉取:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories )解决此问题可以在git pull命令后加入参数--allow-unrelated-histories
git pull 远程仓库简称 分支名称
-
推送到远程仓库:在使用git push命令将本地文件推送至码云远程仓库时,如果是第一次操作,需要进行身份认证,认证通过才可以推送
git push 远程仓库简称 分支名称
3.1.5 分支操作
-
查看分支
git branch 列出所有本地分支
git branch -r 列出所有远程分支
git branch -a 列出所有本地分支和远程分支
-
创建分支
git branch 分支名称
-
切换分支:在命令行中会显示出当前所在分支
git checkout 分支名称
-
推送至远程仓库分支:推送完成后可以查看远程仓库
git push 远程仓库简称 分支命令
-
合并分支:分支合并时需注意合并的方向
git merge 分支命令
3.1.6 标签操作
-
查看标签
git tag
-
创建标签
git tag 标签名
-
将标签推送至远程仓库:推送完成后可以在远程仓库中查看标签
git push 远程仓库简称 标签名
-
检出标签
git checkout -b 分支名 标签名
3.2 在IDEA中使用Git
通过Git命令可以完成Git相关操作,为了简化操作过程,我们可以在IEDA中配置Git,配置好后就可以在IDEA中通过图形化的方式来操作Git。在IDEA中使用Git,本质上还是使用的本地安装的Git软件,所以需要提前安装好Git并在IDEA中配置Git。
3.2.1 在IDEA中配置Git
Git安装目录:
IDEA中的配置:
3.2.2 获取Git仓库
在IDEA中获取Git仓库有两种方式:
-
本地初始化仓库,本质就是执行 git init 命令
1)依次选择菜单【VCS】---【Import into Version Control】---【Create Git Repository】
2)在弹出的【Create Git Repository】对话框中选择当前项目根目录,点击【OK】按钮:
3)操作完成后可以看到当前项目根目录下出现了.git隐藏目录:
4)操作完成后可以在IDEA的工具栏中看到Git的相关操作图标:
-
从远程仓库克隆,本质就是执行 git clone 命令
1)在IDEA开始窗口中点击【Get from Version Control】
2)在弹出的【Get from Version Control】窗口中输入远程仓库的URL地址和对应的本地仓库存放目录,点击【Clone】按钮进行仓库克隆操作
3.2.3 Git忽略文件
在Git工作区中有一个特殊的文件 .gitignore,通过此文件可以指定工作区中的哪些文件不需要Git管理。我们在码云上创建Git远程仓库时可以指定生成此文件,如下:
解释说明:
1)我们在使用Git管理项目代码时,并不是所有文件都需要Git管理,例如Java项目中编译的.class文件、开发工具自带的配置文件等,这些文件没有必要交给Git管理,所以也就不需要提交到Git版本库中
2)注意忽略文件的名称是固定的,不能修改
3)添加到忽略列表中的文件后续Git工具就会忽略它
一个参考的.gitignore文件内容如下:
.git
logs
rebel.xml
target/
!.mvn/wrapper/maven-wrapper.jar
log.path_IS_UNDEFINED
.DS_Store
offline_user.md
*.class### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
3.2.4 本地仓库操作
本地仓库操作:
-
将文件加入暂存区,本质就是执行 git add 命令
-
将暂存区的文件提交到版本库,本质就是执行 git commit 命令
-
查看日志,本质就是执行 git log 命令
3.2.5 远程仓库操作
-
查看远程仓库,本质就是执行 git remote 命令
-
添加远程仓库,本质就是执行 git remote add 命令
-
推送至远程仓库,本质就是执行 git push 命令
-
从远程仓库拉取,本质就是执行 git pull 命令
3.2.6 分支操作
-
查看分支,本质就是执行 git branch 命令
-
创建分支,本质就是执行 git branch 分支名 命令
-
切换分支,本质就是执行 git checkout 命令
-
将分支推送到远程仓库,本质就是执行 git push 命令
-
合并分支,本质就是执行 git merge 命令