实用篇-Git

一、Git初识

git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件,html文件页面等),通过git仓库来对这些文件进行存储和管理

git仓库分为

本地仓库:开发人员自己电脑上的git仓库

远程仓库:远程服务器上的git仓库

git具有哪些强大的功能,为什么值得我们去掌握?

  1. 代码回溯:可以帮助我们快速回到项目开发过程中代码的某个历史版本
  2. 版本切换:同一个项目的不同版本的代码都是不同的,这些版本可以通过git管理版本切换
  3. 多人协作:项目组多人共同开发同一个项目,使用git可以实现代码协调管理
  4. 远程备份:git通过仓库管理代码,分为本地仓库和远程仓库,远程仓库负责备份

实用篇-Git_第1张图片

commit:提交,将本地文件和版本信息保存到本地仓库

push:推送,将本地仓库文件和版本信息上传到远程仓库

pull:拉取,将远程仓库文件和版本信息下载到本地仓库

二、Git安装

官网下载地址:http://git-scm.com/download

安装成功后在任意目录点击鼠标右键可以看到如下菜单表示安装完成

实用篇-Git_第2张图片

Git GUI Here:打开Git图形界面

Git Bash Here:打开Git命令行 (最为常用,我们之后都用这种形式)

三、Git代码托管服务

常用的git代码托管服务

  • gitHub( 地址: https://github.com/),是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub
  • 码云(地址: https://gitee.com/),是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快
  • GitLab(地址: https;//about.gitlab.com/),是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务
  • BitBucket(地址: https://bitbucket.org/) ,是一家源代码托管网站,采用Mercurial和Git作为分布式版本控制系统,同时提供商业计划和免费账户

这里我们将会用码云(gitee)代码托管服务来学习

使用码云的操作流程如下

1、注册码云账号

2、登录码云

3、创建远程仓库

4、邀请其他用户成为仓库成员

四、创建码云仓库练习

这个仓库就是远程仓库 

实用篇-Git_第3张图片

实用篇-Git_第4张图片

实用篇-Git_第5张图片

实用篇-Git_第6张图片实用篇-Git_第7张图片

下面我们将通过这个远程仓库,来练习一下常用的git命令

五、Git常用命令

1. git全局设置

设置用户信息

git config --global user.name "keke"     设置全局用户名
git config --global user.email "[email protected]"  设置邮箱地址

查看配置信息

git config --list

实用篇-Git_第8张图片

2. git仓库获取

获取git仓库的方式有两种

  • 本地初始化一个git仓库(不常用)
  • 远程仓库克隆(不常用)

2.1 本地git仓库初始化

具体操作如下

1.在任意目录下创建一个空目录(例如repo1)作为我们本地git仓库

2.进入这个目录中,点击右键打开git bash窗口

3.执行命令git init

如果在当前目录中看到.git文件夹(为隐藏文件夹)说明git仓库创建成功

实用篇-Git_第9张图片

实用篇-Git_第10张图片

实用篇-Git_第11张图片

2.2 远程仓库克隆

git clone 远程仓库地址

之前我们在gitee上创建过一个仓库,我们现在把那个仓库克隆到我们本地,注意不能和刚才创建的本地git仓库嵌套

实用篇-Git_第12张图片

实用篇-Git_第13张图片

3. 基本概念理解

版本库:前面看到的.git文件夹就是版本库,版本库中存储了许多配置信息、日志信息和文件版本信息

工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要存放开发的代码

暂存区:.git文件夹中有许多文件,其中一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方

实用篇-Git_第14张图片

4. git工作区中文件的状态

git工作区中文件存在两种状态:

untracked未跟踪(未被纳入版本控制)

tracked已跟踪(被纳入版本控制):

  1. Unmodified 未修改状态
  2. Modified 已修改状态
  3. staged 已暂存状态

注意:这些文件的状态随着我们执行git命令发送变化

在代码仓库中,未执行add命令,文件状态就是untracked未跟踪状态,即未被git所管理,当执行过add命令后,状态变成staged已暂存状态

5. 本地仓库操作命令

git status            //查看工作区中文件状态
git add   文件名       //将文件的修改加入暂存区
git reset 文件名       //将暂存区的文件取消暂存或者切换到指定版本
git commit -m "提示信息" 文件名      //将暂存区的文件修改提交到版本库
git log                //查看日志
git reset --hard 版本号   //回到某一版本

演示如下

第一步在工作区中手动创建一个user.java文件,并用gitbash在这个目录下打开

实用篇-Git_第15张图片

执行git status命令 查看文件状态为untracked

实用篇-Git_第16张图片执行git add命令 

实用篇-Git_第17张图片

执行git reset命令,将暂存区中文件取消暂存

实用篇-Git_第18张图片

执行git commit -m "提示信息" 文件名 

实用篇-Git_第19张图片

注意刚才提交的user.jave应该是处于unmodified未修改状态,现在我们手动修改该文件,保存,然后查看该文件的状态

实用篇-Git_第20张图片

对文件修改了,但是未放进暂存区,就是这种红色的modified的提示,下面把他加入到暂存区,用git add命令。可以看到modified变绿,意味着已修改并且放入暂存区状态

实用篇-Git_第21张图片

提交这个已修改并且放入暂存区状态的user.java

实用篇-Git_第22张图片

执行git log命令,查看日志信息

实用篇-Git_第23张图片

可以看到我们有两次commit,后面有这个版本的唯一标识,在"提交"版本中,我们还没有编辑user.java文件,接下来我们回到这个版本

实用篇-Git_第24张图片

实用篇-Git_第25张图片

6. 远程仓库操作命令

git remote //查看远程仓库
git remote add //添加远程仓库
git clone //从远程仓库克隆
git pull //从远程仓库拉去
git push //推送到远程仓库

查看远程仓库 

实用篇-Git_第26张图片

添加远程仓库

我们之前创建的repo1仓库是我们本地初始化的一个仓库,没有关联任何一个远程仓库,我们现在用以下命令给其添加一个远程仓库

git remote add origin 远程仓库地址 

第一步创建一个远程仓库

实用篇-Git_第27张图片

实用篇-Git_第28张图片

实用篇-Git_第29张图片

添加完远程仓库后,远程仓库有更新的内容,就可以克隆到本地仓库,同时本地仓库新增的内容也可以推送到远程仓库

克隆远程仓库

初始化repo1的readme文件,然后克隆到本地的repo2目录下

实用篇-Git_第30张图片

实用篇-Git_第31张图片

实用篇-Git_第32张图片

实用篇-Git_第33张图片

推送至远程仓库

在刚才克隆远程仓库里新增一个user.txt文件,交给git管理,然后推送到远程仓库中

实用篇-Git_第34张图片

实用篇-Git_第35张图片

练习,修改user.txt文件,push到远程仓库

第一步:修改user.txt文件

实用篇-Git_第36张图片

实用篇-Git_第37张图片

第二步:git add交给git去管理,然后commit提交到本地仓库,再git push到远程仓库

实用篇-Git_第38张图片

实用篇-Git_第39张图片

注意必须仓库成员才可以进行推送代码,还需要进行相应的权限认证

远程仓库拉取

git pull short-name branch-name

注意如果当前本地仓库步是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错

解决:可以在git pull命令后加入参数 --allow-unrelate-histories

7. 分支操作

分支是git使用过程中非非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线

同一个仓库可以有很多分支,各个分支相互独立,互不干扰

通过git init命令创建本地仓库时默认会创建一个master分支

git branch //查看分支
git branch [name] //创建分支
git checkout [name] //切换分支
git push [shortName] [name] //推送至远程仓库分支
git merge [name] //合并分支

下面我们在码云上创建一个远程仓库,在这个仓库中演示这些命令

第一步:创建远程仓库

实用篇-Git_第40张图片

实用篇-Git_第41张图片

第二步:克隆到本地

实用篇-Git_第42张图片

实用篇-Git_第43张图片

第三步:查看分支

git branch //查看本地所有分支
git branch -r //查看远程所有分支
git branch -a //查看本地和远程所有分支

实用篇-Git_第44张图片

第四步:创建分支

git branch [name]

实用篇-Git_第45张图片

第五步:切换分支

git checkout [name]

实用篇-Git_第46张图片

第六步:推送本地分支到远程仓库

git push [shortName] [name]

实用篇-Git_第47张图片

实用篇-Git_第48张图片

实用篇-Git_第49张图片

第七步:分支合并

git merge [name]

我们希望b1和b2分支下的b1.txt和b2.txt都合并到主分支master中

首先切换至master分支

git checkout master

然后合并b1分支

git merge b1

出现这个界面,然后按esc键,然后输入:wq即可 

实用篇-Git_第50张图片

实用篇-Git_第51张图片

master分支再推送到远程仓库中

git push origin master

实用篇-Git_第52张图片

8. 标签操作

git tag //列出已有的标签
git tag [name] 创建标签
git push [shortName] [标签名] //将标签推送至远程仓库
git checkout -b p[branch][name] //检出标签

Git中的标签,指的是某个分支某个特定时间点的状态。通过标签,可以方便的切换到标记时状态

比较有代表性的是人们使用这个功能来标记发布结点(v1.0,v1.2等)。下面是mybatis-plus的标签:

实用篇-Git_第53张图片

下面我们将继续用repo3仓库,来进行标签操作的演示

实用篇-Git_第54张图片

列出已有标签

创建标签

推送至远程仓库

实用篇-Git_第55张图片

查看远程仓库

实用篇-Git_第56张图片

这个v1.0其实就是记录了我们master分支的当前状态

我们新增一个test.txt到本地repo3,然后打一个新的标签,推送到远程仓库

实用篇-Git_第57张图片

实用篇-Git_第58张图片

检出标签

新建一个b1.0标签,用来指向repo3仓库的v1.0标签

实用篇-Git_第59张图片

实用篇-Git_第60张图片

总结:

tag是git版本库的一个标记,指向某个commit的指针。

tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 v.1.0.2 …这样的标签。

tag感觉跟branch有点相似,但是本质上和分工上是不同的:

tag 对应某次commit, 是一个点,是不可移动的。
branch 对应一系列commit,是很多点连成的一根线,有一个HEAD 指针,是可以依靠 HEAD 指针移动的。
所以,两者的区别决定了使用方式,改动代码用 branch ,不改动只查看用 tag。

tag 和 branch 的相互配合使用,有时候起到非常方便的效果,例如:已经发布了 v1.0 v2.0 v3.0 三个版本,这个时候,我突然想不改现有代码的前提下,在 v2.0 的基础上加个新功能,作为 v4.0 发布。就可以检出 v2.0 的代码作为一个 branch ,然后作为开发分支

六、IDEA集成Git

1. 在IDEA中配置git
实用篇-Git_第61张图片

2. git仓库获取

2.1 本地git仓库获取

我们创建一个maven项目,路径如下,现在我们期望用git仓库来管理我们的项目

实用篇-Git_第62张图片

实用篇-Git_第63张图片

实用篇-Git_第64张图片

实用篇-Git_第65张图片实用篇-Git_第66张图片

2.2 远程git仓库获取

实用篇-Git_第67张图片

实用篇-Git_第68张图片

实用篇-Git_第69张图片

实用篇-Git_第70张图片

实用篇-Git_第71张图片

实用篇-Git_第72张图片

.gitignore这个文件的作用是告诉git我们项目中哪些文件不需要git仓库去管理

3. IDEA中使用Git

3.1 本地仓库操作

  • 将文件加入暂存区
  • 将暂存区的文件提交到版本库
  • 查看日志

将文件加入暂存区

实用篇-Git_第73张图片

新建文件的时候,直接点击添加即可

实用篇-Git_第74张图片

将暂存区的文件提交到版本库

实用篇-Git_第75张图片

 查看日志实用篇-Git_第76张图片实用篇-Git_第77张图片

3.2 远程仓库操作

  • 查看远程仓库
  • 添加远程仓库
  • 断开远程仓库
  • 推送至远程仓库
  • 从远程仓库拉取

查看远程仓库

实用篇-Git_第78张图片

实用篇-Git_第79张图片

添加远程仓库

实用篇-Git_第80张图片

断开远程仓库 (指的是本地和远程仓库的关联关系断开了)

实用篇-Git_第81张图片

推送至远程仓库

我们新建两个文件,分别是test.txt和波风水门.txt然后推送到远程仓库中

实用篇-Git_第82张图片实用篇-Git_第83张图片实用篇-Git_第84张图片

实用篇-Git_第85张图片

 从远程仓库拉取

实用篇-Git_第86张图片

由于本地代码和远程仓库完全一致,所以拉取代码没有变化 

实用篇-Git_第87张图片

3.3 分支操作

  • 查看分支
  • 创建分支
  • 切换分支
  • 将分支推送到远程仓库
  • 合并分支

查看分支

实用篇-Git_第88张图片

 创建分支

实用篇-Git_第89张图片

实用篇-Git_第90张图片

切换分支

实用篇-Git_第91张图片

将分支推送到远程仓库

实用篇-Git_第92张图片

实用篇-Git_第93张图片

实用篇-Git_第94张图片

实用篇-Git_第95张图片

合并分支

我们在b100分支中,创建一个helloworld.txt文件,然后合并至master分支

实用篇-Git_第96张图片

此时master分支下是没有这个文件的 

实用篇-Git_第97张图片

点击合并 

实用篇-Git_第98张图片

实用篇-Git_第99张图片

你可能感兴趣的:(分布式微服务,git)