Git
代码分布式控制工具
一,概述
git 是一个分布式版本控制工具(运用最广的一个版本控制工具),svn(也是一个版本控制工具)。 git 是用来管理项目代码版本的,他可以让多人开发同一个项目,且保证项目的完整性及唯一性。(git 都是在本地仓库(本地电脑上的)进行代码的修改 提交给远程仓库(网络地址))
二,环境配置和初始化使用
1,git 环境安装
在官网下载适用于系统的程序即可;
官网https://git-scm.com/
2,查看安装状态
使用下列命令,出现版本号即是完成安装;
git version #查看版本
3,在本地初始化一个仓库(仓库可以看作存放各种代码的集合体)
3.1 找一个文件夹(新建一个文件夹) 3.2 在对应的文件内(点击右键 选择 git Bash 打开 git 命令行)
3.3 在命令行内容 输入以下内容
git init #对库进行初始化,必须要执行的命令;
3.4 查看文件夹 此时这个文件内 就多了一个隐藏的文件夹 叫做.git
4,git 的分区(.git 里有什么内容)
查看本地仓库的状态
git status
git 本地仓库的分区分为
暂存区 暂时存放你添加的内容 历史区(版本库)存放对应的你提交的版本 工作区 实际操作的分区
三,使用入门
#一般简易使用流程
#初始化 => 找到自己编写的文件 => 可以先配置好全局用户信息 => 添加到暂存区 => 将暂存区的文件提交给历史区 => 在历史区就意味着文件已经存入了,本地存储流程结束 || 当在使用远程存储时,还需把仓库推送至网络地址,然后上传即可;
#在整个流程中,可以随时查看状态
#查看状态命令
git status #查看状态
git log #查看历史
git branch #查看分支
1.在工作区新建一个 hello.txt 文件
2.添加到暂存区
git add 文件名
3.使用 git status 查看状态
此时对应的 hello.text 文件已经添加到暂存区
4.将暂存区的文件提交给历史区,一旦提交至历史区后就会生成历史版本信息;
git commit 添加在暂存区的文件名
此时会出现一个问题 他不知道你是谁 我们需要配置一下你是谁
5,配置对应的用户签名
用户签名和能否登录没有关系,只是作为识别是谁写的代码;
git config --global user.name "your name" #在全局配置你的名字
git config --global user.email "you@email.com" #在全局配置你的邮箱
6,当你配置好对应的用户信息后 我们就可以继续来提交给历史区
git commit 在暂存区的文件名
6.1 这个里面会要求你填入对应的提交的信息(里面使用到的是 vim 编辑器 进行编辑)
阅读模式 esc 返回到这个模式 插入模式 i a 进入插入模式 命令行模式 :进入(保存后退出 :wq)
出现这个框表示当前已经成功了
输入git status
查看一下,(暂存区就没有文件)
7,查看对应的历史区的提交信息
git log
四,关于工作区到暂存区的操作
1,添加一个文件
git add 文件名
2,添加文件夹(将整个文件夹全部添加到暂存区)
git add 文件路径
3,添加所有的内容
#全写
git add --all
#简写
git add .
4,从暂存区撤回
git reset HEAD -- 文件名 #文件名前面有空格
git reset HEAD -- 文件夹 #文件名前面有空格
#撤回所有
git reset HEAD -- *
git reset HEAD -- .
备注:从工作区 把内容删除 从暂存区 是否可以撤回到工作区(不能 暂存区 只是暂时存放 删除以后不 能通过暂存区复原(删了的内容早再暂存区也不存在了))
五,从暂存区到历史区的操作
1,提交文件
每次提交都需要进入 vim 编辑
git commit 文件名
参数 -m;提交文件的时候可以指定对应的版本信息
git commit -m 版本信息 文件名
2,从历史区撤回到工作区(版本穿梭,常用)
git reset --hard 版本id #将对应的历史区指定版本的内容还原
git reset --hard HEAD #还原最近一次提交的内容
六,分支
将不同功能的代码区分,模块操作,整体运行;
分支相当模块 比如说我现在要完成一个系统 这个系统里面有登录 注册 以及 数据查询等功能。(按照 原本的思想来的话 我们是将这个项目作为整体 一起提交 一起回滚 效率低了 现在我们采用分支的手段 每个功能点作为一个分支 这样我就可以互不干扰 将这个作完以后 合并为一个整体)
1,查看分支
git branch
master 相当于主干,主分支;绿色的加 * 号(表示你当前处在这个分支)
2,创建分支
git branch 分支名
注意:分支名不能随便命名(按照规范命名)
-
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 主分支下来,看一下有没有冲突,如果有就先解决冲突后再申请合并。
-
git 提交记录规范
每个 git commit 记录都需要按照固定格式,具体格式为: 第一行:作者: 功能模块名称(或 功能模块 ID) 第二行:提交描述,中英文皆可
增加代码; 修改代码; 删除代码;
3,删除分支
git branch -d 分支名
4,切换分支
git checkout 分支名
5,合并分支
git merge feature-login #将 feature-login 合并给当前分支
远程仓库使用
主要使用 github,gitee;
github 是一个开源的代码共享平台(存放对应的代码以及相关去查看和下载别人的代码)全球性质的一 个代码托管平台。gitee (码云)。
1,克隆下载
git clone 仓库地址
2,拉取最新的数据
git pull
3,上传事件的代码到远程仓库
1,在仓库管理网站,或远程服务器上登录;
2,需要创建仓库,这里以 gitee 为例;
先设置别名
#这里的 origin 是别名,创建一个别名对应地址,方便使用;
git remote add origin 地址对应的 git 文件
#查看别名
git remote -v
推送本地库;上传内容到对应的远程仓库时,第一次需要输入密码验证;
#使用 origin 的别名,进行推送的最小单位是 分支
git push -u origin master
#-u 指定用户名,这里已经有全局用户名; origin 指定对应的分支 master 主分支;
远程使用问题:git 冲突 (当多个用户操作同一个文件时,最好的解决办法,分支)
刚开始是一代版本 我上传完 git 上面变成 2 代版本 而对应你的历史版本还是 1 代 这个时候就会产生冲突。 就是先把二代版本拿下来 进行比对 比对完 再进行合并 合并完再上传。
解决办法:
1,获取 github 的版本(git pull 会直接进行合并 不安全)
git fetch origin master:temp
#获取最新的数据,并开辟一个临时分支
2,对比
git diff temp
#对比临时分支
3,进行合并
git merge temp
#合并分支