Git

 

Git

代码分布式控制工具

一,概述

​ git 是一个分布式版本控制工具(运用最广的一个版本控制工具),svn(也是一个版本控制工具)。 git 是用来管理项目代码版本的,他可以让多人开发同一个项目,且保证项目的完整性及唯一性。(git 都是在本地仓库(本地电脑上的)进行代码的修改 提交给远程仓库(网络地址))

二,环境配置和初始化使用

1,git 环境安装

在官网下载适用于系统的程序即可;

​ 官网https://git-scm.com/

image-20220422190605990

2,查看安装状态

​ 使用下列命令,出现版本号即是完成安装;

git version		#查看版本

image-20220422190842148

3,在本地初始化一个仓库(仓库可以看作存放各种代码的集合体)

​ 3.1 找一个文件夹(新建一个文件夹) ​ 3.2 在对应的文件内(点击右键 选择 git Bash 打开 git 命令行)

image-20220422191002838 3.3 在命令行内容 输入以下内容

git init	#对库进行初始化,必须要执行的命令;

image-20220422191126949

​ 3.4 查看文件夹 ​ 此时这个文件内 就多了一个隐藏的文件夹 叫做.git

image-20220422191134285

4,git 的分区(.git 里有什么内容)

​ 查看本地仓库的状态

git status

image-20220422191233484

git 本地仓库的分区分为

​ 暂存区 暂时存放你添加的内容 ​ 历史区(版本库)存放对应的你提交的版本 ​ 工作区 实际操作的分区

image-20220422191305811

三,使用入门

#一般简易使用流程

#初始化  =>  找到自己编写的文件  =>  可以先配置好全局用户信息  =>  添加到暂存区  =>  将暂存区的文件提交给历史区 =>  在历史区就意味着文件已经存入了,本地存储流程结束  || 当在使用远程存储时,还需把仓库推送至网络地址,然后上传即可;
#在整个流程中,可以随时查看状态

#查看状态命令
git status	#查看状态
git log		#查看历史
git branch 		#查看分支

1.在工作区新建一个 hello.txt 文件

image-20220422192142418

2.添加到暂存区

git add 文件名

image-20220422192213030

3.使用 git status 查看状态

​ 此时对应的 hello.text 文件已经添加到暂存区

image-20220422192238810

4.将暂存区的文件提交给历史区,一旦提交至历史区后就会生成历史版本信息;

git commit 添加在暂存区的文件名

​ 此时会出现一个问题 他不知道你是谁 我们需要配置一下你是谁

image-20220422192315693

5,配置对应的用户签名

用户签名和能否登录没有关系,只是作为识别是谁写的代码;
git config --global user.name "your name"	#在全局配置你的名字
git config --global user.email "you@email.com"	#在全局配置你的邮箱

image-20220422192602437

6,当你配置好对应的用户信息后 我们就可以继续来提交给历史区

git commit 在暂存区的文件名
6.1 这个里面会要求你填入对应的提交的信息(里面使用到的是 vim 编辑器 进行编辑)

​ 阅读模式 esc 返回到这个模式 ​ 插入模式 i a 进入插入模式 ​ 命令行模式 :进入(保存后退出 :wq)

出现这个框表示当前已经成功了

image-20220422192853648

​ 输入git status查看一下,(暂存区就没有文件)

image-20220422192928315

7,查看对应的历史区的提交信息

git log

image-20220422193010292

四,关于工作区到暂存区的操作

1,添加一个文件

git add 文件名

2,添加文件夹(将整个文件夹全部添加到暂存区)

git add 文件路径

image-20220422193245316

3,添加所有的内容

#全写
git add --all
#简写
git add .

image-20220422193344219

4,从暂存区撤回

git reset HEAD -- 文件名	#文件名前面有空格
git reset HEAD -- 文件夹	#文件名前面有空格

image-20220422193516890

#撤回所有
git reset HEAD -- *
git reset HEAD -- .

备注:从工作区 把内容删除 从暂存区 是否可以撤回到工作区(不能 暂存区 只是暂时存放 删除以后不 能通过暂存区复原(删了的内容早再暂存区也不存在了))

五,从暂存区到历史区的操作

1,提交文件

每次提交都需要进入 vim 编辑
git commit 文件名
参数 -m;提交文件的时候可以指定对应的版本信息
git commit -m 版本信息 文件名

image-20220422193855714

2,从历史区撤回到工作区(版本穿梭,常用)

git reset --hard 版本id	#将对应的历史区指定版本的内容还原
git reset --hard HEAD	 #还原最近一次提交的内容

image-20220422194047172

image-20220422194051273

六,分支

将不同功能的代码区分,模块操作,整体运行;

​ 分支相当模块 比如说我现在要完成一个系统 这个系统里面有登录 注册 以及 数据查询等功能。(按照 原本的思想来的话 我们是将这个项目作为整体 一起提交 一起回滚 效率低了 现在我们采用分支的手段 每个功能点作为一个分支 这样我就可以互不干扰 将这个作完以后 合并为一个整体)

1,查看分支

git branch

image-20220422194313040

master 相当于主干,主分支;绿色的加 * 号(表示你当前处在这个分支)

2,创建分支

git branch 分支名

image-20220422194501524

注意:分支名不能随便命名(按照规范命名)
  1. git 分支命名规范

1,git 分支分为集成分支、功能分支和修复分支,分别命名为 develop、feature 和 hotfix,均为单数。不可使用 features、future、hotfixes、hotfixs 等错误名称。 2,master(主分支,永远是可用的稳定版本,不能直接在该分支上开发) 3,develop(开发主分支,所有新功能以这个分支来创建自己的开发分支,该分支只做只合并操作,不能直 接在该分支上开发) 4,feature-xxx(功能开发分支,在 develop 上创建分支,以自己开发功能模块命名,功能测试正常后合并到 develop 分支) 5,feature-xxx-fix(功能 bug 修复分支,feature 分支合并之后发现 bug,在 develop 上创建分支修复,之后合并回 develop 分支。PS:feature 分支在申请合并之后,未合并之前还是可以提交代码的,所以 feature 在合并之前还可以在原分支上继续修复 bug) 6,hotfix-xxx(紧急 bug 修改分支,在 master 分支上创建,修复完成后合并到 master)

注意事项:

一个分支尽量开发一个功能模块,不要多个功能模块在一个分支上开发。 feature 分支在申请合并之前,最好是先 pull 一下 develop 主分支下来,看一下有没有冲突,如果有就先解决冲突后再申请合并。

  1. git 提交记录规范

每个 git commit 记录都需要按照固定格式,具体格式为: 第一行:作者: 功能模块名称(或 功能模块 ID) 第二行:提交描述,中英文皆可

增加代码; 修改代码; 删除代码;

3,删除分支

git branch -d 分支名

image-20220422194735560

4,切换分支

git checkout 分支名

image-20220422194812311

5,合并分支

git merge feature-login #将 feature-login 合并给当前分支

image-20220422194906758

远程仓库使用

主要使用 github,gitee;

github 是一个开源的代码共享平台(存放对应的代码以及相关去查看和下载别人的代码)全球性质的一 个代码托管平台。gitee (码云)。

1,克隆下载

git clone 仓库地址

image-20220422195040563

2,拉取最新的数据

git pull

image-20220422195116345

3,上传事件的代码到远程仓库

1,在仓库管理网站,或远程服务器上登录;
2,需要创建仓库,这里以 gitee 为例;

image-20220422195247060

image-20220422195304901

image-20220422195311995

先设置别名
#这里的 origin 是别名,创建一个别名对应地址,方便使用;
git remote add origin 地址对应的 git 文件

#查看别名
git remote -v
推送本地库;上传内容到对应的远程仓库时,第一次需要输入密码验证;
#使用 origin 的别名,进行推送的最小单位是 分支
git push -u origin master
#-u 指定用户名,这里已经有全局用户名; origin 指定对应的分支 master 主分支;

image-20220422195622631

远程使用问题:git 冲突 (当多个用户操作同一个文件时,最好的解决办法,分支)

刚开始是一代版本 我上传完 git 上面变成 2 代版本 而对应你的历史版本还是 1 代 这个时候就会产生冲突。 就是先把二代版本拿下来 进行比对 比对完 再进行合并 合并完再上传。

解决办法:
1,获取 github 的版本(git pull 会直接进行合并 不安全)
git fetch origin master:temp
#获取最新的数据,并开辟一个临时分支
2,对比
git diff temp
#对比临时分支
3,进行合并
git merge temp
#合并分支